Java 不同的MD5结果

Java 不同的MD5结果,java,php,md5,Java,Php,Md5,我正在将一个用Java struts开发的应用程序移植到PHP,数据库是MySQL PHP、MySQL或在线MD5为NtbPq生成以下内容: db94207ab2924504e0f590682645258a 其中,由于应用程序已为相同密码生成此密码: db94207ab292454e0f590682645258a ^ 请注意缺少的1个字符。现在,Java应用程序可以完美地工作并记录用户,但PHP无法验证,并说它与PHP md5函数不匹配 有什么解决方案可以用31字

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

PHP、MySQL或在线MD5为NtbPq生成以下内容:

db94207ab2924504e0f590682645258a
其中,由于应用程序已为相同密码生成此密码:

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

有什么解决方案可以用31字符的md5在PHP中进行验证吗


编辑:问题是我还没有开发java应用程序,现在有400多个用户,我想在php中移植,我对java一无所知,我只想在php中使用31个字符的md5

我想这可能会帮助您:


在我看来,似乎也是同样的问题。

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

解决方案:找到十六进制转换代码,将其撕掉,然后使用标准库。例如,正如您的评论所示,是Java代码产生了错误的结果(您的帖子不是很清楚),您可以使用它

然而,正如评论中所指出的,无论如何都应该避免使用MD5。这可能是可行的,也可能不是可行的,但它应该在你的中期路线图上


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

嗨,我要做的是将MD5散列存储在数据库中,并且每当检测到该特定用户的登录时,将其转换为PBKDF2(更安全)。然后可以删除旧的md5

本指南向您展示了如何做到这一点



MD5散列应该有32位(),因此它在代码中的某个位置被截断。你能粘贴生成它的特定PHP函数吗?尝试使用不同的密码哈希算法,因为MD5是不安全的。它应该是32位数字,如果没有代码,很难判断是什么导致了截断。试试@Justinas,这不是问题,如果他想移植用户,他不能更改算法java struts应用程序正在生成31个字符的md5,我没有java的经验,我的应用程序可以很好地使用32个字符的md5,但是我想移植之前由java md5创建的mysql数据库,并使用php登录用户。你应该将其标记为重复,而不是添加一个问题的链接。我对这里给出的答案相当不了解。我找不到任何选项来标记为重复-很抱歉。@MightyPort:老实说,我不认为它是重复的。我不想修复java应用程序,我只想使用这个java应用程序为400多个用户生成的md5在我的php应用程序中使用。问题是我没有开发java应用程序,现在有400多个用户,我想把它们移植到php中,对此我一无所知java@Neox:从根本上说,该Java代码已被破坏。你是说你有一大堆存储的MD5破总数?(现在还不清楚你的处境。)我有400多个用户存储在mysql数据库中,由java应用程序生成的31个字符的md5需要移植到php应用程序中,这是主要的problem@Neox:我建议您让这些用户重新登录,以便您可以存储有效的MD5总和(或者最好升级到其他加密哈希)我同意,我打算让用户在登录php应用程序后更改密码并使其成为bcrypt,以修复损坏的哈希,我必须用java创建新模块,我对此一无所知,这就是为什么我要检查是否可以使用php中损坏的哈希来至少验证用户但在他能够做到这一点之前,用户必须先登录,用户无法登录的问题我同意这并不能解决他当前的问题。只是对未来的建议是的,这就是问题所在,我无法使用31个字符的MD5验证登录。你必须查看生成哈希代码的部分,并尝试在php中执行相同的操作。将来做什么@Arno_Geism是的,我计划将来集成bcrypt,但现在我需要用户至少验证登录,我会检查java代码并将其发布在这里,因为我不懂java,我需要一些帮助。