java md5加密问题。xa3这样的字符串怎么转义?

php 是这样的

$pwd=123456;

echo MD5($pwd."\xa3");

结果:e885a841c486e07e91290546698f748c

java 这样结果和php的结果不对,

int str="123456";

return getMD5(str+"\\xa3");

结果:3245fdd037dda90671a058373e238244

单纯php的md5 和java的md5 单独测试 是一致的
echo "md5:".md5("123456");
php md5结果:e10adc3949ba59abbe56e057f20f883e
return getMD5("123456");
java md5结果:e10adc3949ba59abbe56e057f20f883e

补充:
echo "md5:".md5("\xa3");
md5:d527ca074d412d9d0ffc844872c4603c

return getMD5("\\xa3");
1230eb1762a8e0c757bdc54ac49496fa


回答:

echo MD5($pwd."\\xa3"); 你试试
PHP中的的写法相当于 123456£
而JAVA中 的是 123456\xa3

当然不同了,PHP把它也转义过来,就可以了

echo MD5(utf8_encode($pwd."\xa3"));

//807571545f23311fa2290cdb13adf5bb

String str="123456";

String res= str+"£";

getMD5(res)

//807571545f23311fa2290cdb13adf5bb

echo MD5($pwd."\\xa3");

//3245fdd037dda90671a058373e238244

String str="123456";

String res= str+"\\xa3";

//3245fdd037dda90671a058373e238244

String pwd = "123456";

String salt = "\u00a3"; // 就是\xa3的unicode码

String str = pwd + salt;

byte[] bytes = str.getBytes("ISO-8859-1"); //把所有的字节都当成PHP默认的ISO-8859-1字符来处理

MessageDigest md = MessageDigest.getInstance("MD5");

byte[] digest = md.digest(bytes);

String md5Hex = String.format("%02x", new java.math.BigInteger(1, digest));

System.out.println(md5Hex);

//输出:e885a841c486e07e91290546698f748c


回答:

\xa3£ 这个字
所以 return getMD5(str+"£") 就可以了

以上是 java md5加密问题。xa3这样的字符串怎么转义? 的全部内容, 来源链接: utcz.com/p/945032.html

回到顶部