如何将此Java代码转换为PHP?
public static String encryptMD5_Salt(String content) {
String resultString = "";
String appkey = "acdf,kef";
byte[] a = appkey.getBytes();
byte[] datSource = content.getBytes();
byte[] b = new byte[a.length + 4 + datSource.length];
int i;
for (i = 0; i < datSource.length; i++) {
b[i] = datSource[i];
}
b[i++] = (byte) 143;
b[i++] = (byte) 112;
b[i++] = (byte) 131;
b[i++] = (byte) 143;
for (int k = 0; k < a.length; k++) {
b[i] = a[k];
i++;
}
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(b);
resultString = new HexBinaryAdapter().marshal(md5.digest());
} catch (Exception e) {
e.printStackTrace();
}
return resultString.toLowerCase();
}
问题是我找不到在java中将Integer
转换为byte
的等效方法:
b[i++] = (byte) 143;
b[i++] = (byte) 112;
b[i++] = (byte) 131;
b[i++] = (byte) 143;
php代码:
$hexString = '123456';#sample value
$bkey = pack('a*',$hexString);
$bkey .= pack('N*',143,112,131,143);
$bkey = pack('a*','acdf,kef');
$re = md5($bkey);
$re =sha1('sha256',$re);
他们得到了不同的结果。
答案 0 :(得分:0)
这有点乱,但是:
$int_val = 143
$byte_val = (($int_val + 129) % 256) - 128
但请注意,PHP没有等效的byte
类型,所以这实际上只是一个以类似方式表示的整数。