作为练习,我尝试在 PHP 中实现 MD5。我知道 PHP 有一个内置函数,但我想阅读、运行和研究一个工作源。我发现这个脚本在取消注释适当的部分(以启用消息填充)并且相应地格式化数组(为了与我的 PHP 版本兼容)时效果很好。但是产生的哈希 - 尽管长度正确 - 不是 MD5。例如,零长度字符串的 MD5 散列应该是:
d41d8cd98f00b204e9800998ecf8427e
但是脚本返回的哈希值是:
85bd946a585af9fd3fb9eda68707c1d8
我尝试过其他字符串,但没有相关性。我一直在研究 MD5,所以对它的工作原理有一个合理的了解。我一直在审问剧本,但它似乎是合法的。我想我是在向另一个人大喊大叫,挑战发现这个脚本为什么没有返回 MD5。