【发布时间】:2016-09-14 07:41:29
【问题描述】:
我只想工作 php md5 函数(代码),它与下面的 java 代码生成相同的结果...
普通的 php md5 函数与这个 java 代码没有给出相同的结果..
private static final String md5(String string) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(string.getBytes());
byte[] arrby = messageDigest.digest();
StringBuffer stringBuffer = new StringBuffer();
int n = 0;
block3 : do {
if (n >= arrby.length) {
return stringBuffer.toString();
}
String string2 = Integer.toHexString(255 & arrby[n]);
do {
String string3;
if (string2.length() >= 2) {
stringBuffer.append(string2);
++n;
continue block3;
}
string2 = string3 = "0" + string2;
} while (true);
} while (true);
}
catch (NoSuchAlgorithmException var1_7) {
var1_7.printStackTrace();
return "";
}
}
代码已编辑......并给出了示例......
String="fpwdxx-xx0xx-xx"+"8420474066"+"xx-xx"+"2.9"+"xx-xx"+"2016-09-14 21:13:25"+"xx-xx "+"AirTel"+"xx-xx"+""+"xx-xx"+"26b792f77e6f5157"+"xx-xx"+"911364603150705"+"xx-xx"+"A52+"+"xx-xx" +"4.2.2"+"z1t998044Fgrt...d";
Java 结果:cfcb292130f3aa3cd49eed180e3d76a3
PHP 结果:dd7e471b1a66a691097017c8de 2783a3
【问题讨论】:
-
能否举个输入的例子,php给你什么,Java版本给你什么?这似乎很标准。
-
好的。此 Java 代码无法编译 -
break不应该存在。删除它,并尝试在“abc”上运行md5得到与 php 完全相同的结果。我将投票结束,因为它无法重现。 -
输入示例给出...
-
叹息。我运行
php -r 'echo md5("fpwdxx-xx0xx-xx8420474066xx-xx2.9xx-xx2016-09-14 21:13:26f5157xx-xx911364603150705xx-xxA52+xx-xx4.2.2z1t998044Fgrt...d")."\n";'。结果是cfcb292130f3aa3cd49eed180e3d76a3。也许您没有在 PHP 中正确构造字符串。您实际上并没有使用+在 PHP 中连接字符串,是吗? -
是的,你完全正确....谢谢现在知道了...问题解决了...