有没有人能把一段JAVA代码转为PHP

一个好几 2015-01-28 03:28:15
import java.util.Random;

public class PPTVUtil {
public static int a(byte abyte0[], int i) {
int j = 0;
int k = 0;
for (; j < i; j++)
k ^= abyte0[j] << 8 * (j % 4);

return k;
}

public static int a(byte abyte0[], int i, byte abyte1[], int j) {
if (j < 1 + i * 2)
return 0;
for (int k = 0; k < i; k++) {
abyte1[k * 2] = (byte) (0xf & abyte0[k]);
abyte1[1 + k * 2] = (byte) (0xf & abyte0[k] >> 4);
}

int l = 0;
while (l < i * 2) {
byte byte0 = abyte1[l];
byte byte1;
if (abyte1[l] > 9)
byte1 = 87;
else
byte1 = 48;
abyte1[l] = (byte) (byte0 + byte1);
l++;
}
abyte1[i * 2] = 0;
return 1;
}

public static String a(long l) {
byte abyte0[] = new byte[16];
byte abyte1[] = new byte[16];
byte abyte2[] = new byte[33];
int i = 0;
while (i < 16) {
byte byte0;
if (i < "qqqqqww".length())
byte0 = (byte) "qqqqqww".charAt(i);
else
byte0 = 0;
abyte1 = byte0;
i++;
}
a((int) (l / 1000L - 100L), abyte0, 16);
Random random = new Random();
for (int j = 0; j < 16; j++)
if (abyte0[j] == 0)
abyte0[j] = (byte) random.nextInt(256);

b(abyte0, 16, abyte1, 16);
a(abyte0, 16, abyte2, 33);
return new String(abyte2, 0, 32);
}

public static void a(int i, byte abyte0[], int j) {
int k = 0;
while (k < j && k < 8) {
abyte0[k] = (byte) (0xf & i >> 28 - 4 * (k % 8));
byte byte0 = abyte0[k];
byte byte1;
if (abyte0[k] > 9)
byte1 = 87;
else
byte1 = 48;
abyte0[k] = (byte) (byte0 + byte1);
k++;
}
}

public static long b(long l) {
return 0xffffffffL & l;
}

public static void b(byte abyte0[], int i, byte abyte1[], int j) {
long l = a(abyte1, j);
long l1 = l << 8 | l >> 24;
long l2 = l << 16 | l >> 16;
long l3 = l << 24 | l >> 8;
for (int k = 0; k + 16 <= i; k += 16) {
long l4 = 0L;
long l5 = 0L;
long l6 = 0L;
for (int i1 = 0; i1 < 4; i1++) {
l4 |= (long) (0xff & abyte0[k + i1]) << i1 * 8;
l5 |= (long) (0xff & abyte0[4 + (k + i1)]) << i1 * 8;
}

for (int j1 = 0; j1 < 32; j1++) {
l6 = b(l6 - 0x61c88647L);
l4 = b(l4
+ (b(b(l + b(l5 << 4)) ^ b(l5 + l6)) ^ b(l1
+ b(l5 >> 5))));
l5 = b(l5
+ (b(b(l2 + b(l4 << 4)) ^ b(l4 + l6)) ^ b(l3
+ b(l4 >> 5))));
}

for (int k1 = 0; k1 < 4; k1++) {
abyte0[k + k1] = (byte) (int) (255L & l4 >> k1 * 8);
abyte0[4 + (k + k1)] = (byte) (int) (255L & l5 >> k1 * 8);
}

}
}
}

请把代码贴出来,您们就当练练手,小弟谢过了
...全文
314 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一个好几 2015-01-29
  • 打赏
  • 举报
回复
引用 2 楼 u010214003 的回复:
路过,为什么要转呢,直接重写就是了,不同语法,转有什么意思呢
因为要算的一个KEY就是这里出的,而我只懂PHP,不转写没办法,只能求助
小孩神游 2015-01-28
  • 打赏
  • 举报
回复
路过,为什么要转呢,直接重写就是了,不同语法,转有什么意思呢
一个好几 2015-01-28
  • 打赏
  • 举报
回复
同样的功能,Python版的代码如下 #coding:utf-8 import time import datetime import urllib import xmltodict import json import random SERVER_KEY = "qqqqqww" DELTA = 2654435769 def getkey(s): _loc_5='' _loc_6=0 _loc_7=0 _loc_2=s _loc_3=0 _loc_4=0 while _loc_4 < len(_loc_2): _loc_5 = _loc_2[_loc_4]; _loc_6 = ord (_loc_5[0]) _loc_7 = _loc_6 << _loc_4 % 4 * 8; _loc_3 = _loc_3 ^ _loc_7; _loc_4 = _loc_4 + 1 return _loc_3 def encrypt(param1, param2): _loc_5 = 0; _loc_6 = 0; _loc_7 = 0; _loc_13 = 0; _loc_14 = 0; _loc_15 = 0; _loc_16 = 0; _loc_17 = 0; _loc_18 = 0; _loc_19 = 0; _loc_20 = 0; _loc_21 = 0; _loc_22 = 0; _loc_23 = 0; _loc_24 = 0; _loc_25 = 0; _loc_26 = 0; _loc_27 = 0; _loc_28 = 0; _loc_29 = 0; _loc_30 = 0; _loc_31 = 0; _loc_32 = 0; _loc_33 = 0; _loc_34 = 0; _loc_35 = 0; _loc_36 = 0; _loc_37 = 0; _loc_38 = 0; _loc_39 = 0; _loc_40 = 0; _loc_41 = 0; _loc_3 = 16; _loc_4 = getkey(param2); _loc_8 = param1; _loc_9 = param2; _loc_10 = _loc_4; _loc_5 = _loc_4 << 8 | _loc_10 >> 24; _loc_6 = _loc_10 << 16 | _loc_10 >> 16; _loc_7 = _loc_10 << 24 | _loc_10 >> 8; _loc_11 = ""; _loc_12 = 0; while _loc_12 + _loc_3 <= len(_loc_8) : _loc_13 = ord(_loc_8[_loc_12]) << 0; _loc_14 = ord(_loc_8[(_loc_12 + 1)]) << 8; _loc_15 = ord(_loc_8[_loc_12 + 2]) << 16; _loc_16 = ord(_loc_8[_loc_12 + 3]) << 24; _loc_17 = ord(_loc_8[_loc_12 + 4]) << 0; _loc_18 = ord(_loc_8[_loc_12 + 5]) << 8; _loc_19 = ord(_loc_8[_loc_12 + 6]) << 16; _loc_20 = ord(_loc_8[_loc_12 + 7]) << 24; _loc_21 = 0 | _loc_13 | _loc_14 | _loc_15 | _loc_16; _loc_22 = 0 | _loc_17 | _loc_18 | _loc_19 | _loc_20; _loc_23 = 0; _loc_24 = 0; while (_loc_24 < 32): _loc_23 =0xffffffff & ( _loc_23 + DELTA); _loc_33 =0xffffffff & ( (_loc_22 << 4) + _loc_4); _loc_34 =0xffffffff & ( _loc_22 + _loc_23); _loc_35 =0xffffffff & ( (_loc_22 >> 5) + _loc_5); _loc_36 =0xffffffff & ( _loc_33 ^ _loc_34 ^ _loc_35); _loc_21 =0xffffffff & ( _loc_21 + _loc_36); _loc_37 =0xffffffff & ( (_loc_21 << 4) + _loc_6); _loc_38 =0xffffffff & ( _loc_21 + _loc_23); _loc_39 =0xffffffff & ( _loc_21 >> 5); _loc_40 =0xffffffff & ( _loc_39 + _loc_7); _loc_41 =0xffffffff & ( _loc_37 ^ _loc_38 ^ _loc_40); _loc_22 =0xffffffff & ( _loc_22 + _loc_41 ); _loc_24+=1; _loc_25 = _loc_21 >> 0 & 255; _loc_26 = _loc_21 >> 8 & 255; _loc_27 = _loc_21 >> 16 & 255; _loc_28 = _loc_21 >> 24 & 255; _loc_29 = _loc_22 >> 0 & 255; _loc_30 = _loc_22 >> 8 & 255; _loc_31 = _loc_22 >> 16 & 255; _loc_32 = _loc_22 >> 24 & 255; _loc_11 = _loc_11 + chr(_loc_21 >> 0 & 255); _loc_11 = _loc_11 + chr(_loc_21 >> 8 & 255); _loc_11 = _loc_11 + chr(_loc_21 >> 16 & 255); _loc_11 = _loc_11 + chr(_loc_21 >> 24 & 255); _loc_11 = _loc_11 + chr(_loc_22 >> 0 & 255); _loc_11 = _loc_11 + chr(_loc_22 >> 8 & 255); _loc_11 = _loc_11 + chr(_loc_22 >> 16 & 255); _loc_11 = _loc_11 + chr(_loc_22 >> 24 & 255); _loc_12 = _loc_12 + _loc_3; _loc_11 = _loc_11 + ''.join(param1[8:16]); return _loc_11; def add(param1, param2) : _loc_3 = 0; param1 = list( param1 ) while (_loc_3 < param2): param1 .append( chr(0)); _loc_3 = _loc_3 + 1; return param1; def time2String(param1) : _loc_8 = 0; _loc_2 = list('12345678') _loc_3= ''; _loc_4 = "0123456789abcdef"; _loc_5 = list("0123456789abcdef") _loc_6 = 0; while (_loc_6 < 8): _loc_8 = param1 >> 28 - _loc_6 % 8 * 4 & 15; _loc_2[_loc_6] = _loc_5[_loc_8]; _loc_6 = _loc_6 + 1; _loc_2 = ''.join(_loc_2) return _loc_2 def Str2Hex(param1) : _loc_7 = 0; _loc_8 = 0; _loc_2 = list("0123456789abcdef"); _loc_3 = _loc_2; _loc_4 = param1; _loc_5 = list('%*s' % ((2 * len(_loc_4) ),'')); _loc_6 = len(_loc_4); _loc_9 = 0; while (_loc_9 < _loc_6): if (_loc_9 < 8): _loc_7 = ord(_loc_4[_loc_9]) & 15; _loc_8 = ord(_loc_4[_loc_9]) >> 4 & 15; _loc_5[2 * _loc_9] = _loc_3[ord(_loc_4[_loc_9]) & 15]; _loc_5[2 * _loc_9 + 1] = _loc_3[ ord(_loc_4[_loc_9]) >> 4 & 15]; else: _loc_5[2 * _loc_9] = _loc_3[random.randint(0,15)]; _loc_5[2 * _loc_9 + 1] = _loc_3[random.randint(0,15)]; _loc_9+=1; return ''.join(_loc_5); def constructKey(param1) : _loc_2 = time2String(param1); _loc_3 = _loc_2; if len(_loc_3)< 16: _loc_2 = add(_loc_2, 16 - len(_loc_3)); _loc_4 = ""; _loc_5 = SERVER_KEY; if len(SERVER_KEY) < 16: _loc_5 = add(_loc_5, 16 - len(_loc_5)); _loc_4 = encrypt(_loc_2, _loc_5); _loc_4 = Str2Hex(_loc_4); return _loc_4; def getplaykey(s): s = s[4: -4] d = datetime.datetime.strptime(s,'%b %d %H:%M:%S %Y') d = int( time.mktime(d.timetuple())) - 60 -14400 return constructKey (d)

20,358

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧