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

阅读 2.3k
2 个回答

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+"£") 就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题