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