MD5结果不同

Neox

我正在将使用Java struts开发的应用程序移植到PHP,将数据库移植到MySQL中,

PHP,MySQL或在线MD5会为NtbPq生成此代码:

db94207ab2924504e0f590682645258a

当应用程序使用相同的密码生成此密码时:

db94207ab292454e0f590682645258a
              ^

请注意缺少的1个字符。现在,Java应用程序可以完美运行并登录用户,但是PHP无法验证并说它与PHP md5函数不匹配。

有什么解决方案可以通过Java使用31 char md5在PHP中进行验证吗?

编辑:问题是我还没有开发Java应用程序,现在有超过400个用户,我想在php中移植,我对Java一无所知,我只想在PHP中非常方便地使用31个字符的md5

乔恩·斯基特

我强烈怀疑如果字节的前半字节为0,则您在应用程序中使用的十六进制转换会失败。这可能是因为您在应用程序内部包含了十六进制转换代码,而不是使用标准库。

解决方案:找到十六进制转换代码,将其切出,然后使用标准库。例如,在您的评论中似乎是Java代码产生了错误的结果(您的帖子不是很清楚),您可以使用Apache Commons Codec

但是,正如评论中指出的那样,无论如何都应避免使用MD5。目前可能可行,也可能不可行,但这应该在您的中期路线图上。

编辑:作为一种临时措施,您可以编写自己的PHP代码以模拟损坏情况。基本上,您需要执行常规的MD5哈希处理,然后获取十六进制结果并从中删除出现在偶数位置的所有“ 0”。因此,例如“ ab0120”将以“ ab120”结尾-因为第一个“ 0”位于位置2,但最后一个“ 0”位于位置5。或者,您自己执行十六进制转换,一次转换一个字节并从每个两个字符的结果中修剪所有前导“ 0”字符。该代码应尽快删除,用于验证存储的MD5哈希值已损坏的用户是否有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MD5库的结果不同

来自分类Dev

NodeJS使用crypo计算MD5哈希的结果不同

来自分类Dev

DigestUtils和MessageDigest之间的MD5结果不同

来自分类Dev

MD5在C#和Java之间生成不同的结果

来自分类Dev

为什么我的命令行哈希与在线MD5哈希结果不同?

来自分类Dev

MD5哈希值不同

来自分类Dev

MD5散列不同的值

来自分类Dev

为什么两次通用编解码器md5的结果都不同

来自分类Dev

在计算可序列化对象与字符串的 md5 时获得不同的结果

来自分类Dev

MD5返回不同的哈希码-Python

来自分类Dev

对于不同的PDF,MD5始终相同

来自分类Dev

MD5对于相同的输入返回不同的值

来自分类Dev

是否有不同类型的MD5总和生成?

来自分类Dev

对于不同的PDF,MD5始终相同

来自分类Dev

apache Maven使用不同的md5是否正常?

来自分类Dev

重建后,exe / dll的MD5不同

来自分类Dev

Java和C#之间不同的MD5

来自分类Dev

php md5 不同于 python

来自分类Dev

md5(stringa + stringb ...)和md5(stringa)+ md5(stringb)之间的碰撞机会有何不同?

来自分类Dev

Unix md5是否与python的hashlib.md5不同?

来自分类Dev

Python hashlib md5与bash md5sum相比,输出不同且速度较慢?

来自分类Dev

如何为同一个字符串获得两个不同的 md5 哈希结果?

来自分类Dev

PHP MD5(MD5)哈希

来自分类Dev

PHP MD5(MD5)哈希

来自分类Dev

仍然困扰着MD5

来自分类Dev

MD5哈希转换

来自分类Dev

验证文件的md5

来自分类Dev

生成MD5哈希

来自分类Dev

如果使用中文字符,为什么php md5()与python的hash.md5()总是不同?