繁体   English   中英

如何将java中的字节MD5转换为php

[英]how to convert bytes MD5 in java to php

如何将此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);

他们得到差异结果。

有点混乱,但是:

$int_val = 143
$byte_val = (($int_val + 129) % 256) - 128

但是请注意,PHP没有等效的byte类型,因此它实际上只是一个以类似方式表示的整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM