请允许任何人向我解释如何将“我想买些牛奶”之类的短语转换为MD5吗?我阅读了关于MD5的维基百科文章,但是给出的解释超出了我的理解范围:
“MD5处理可变长度 消息进入固定长度的输出 128位。输入消息已中断 分成512位块 (十六个32位小端 整数)“
“十六个32位小端整数”对我来说已经很难了。我检查了关于小端的维基文章并且不明白了。
然而,Wiki文章中的一些短语及其MD5哈希的例子非常好:
MD5(“快速的棕色狐狸跳了起来 懒狗“)= 9e107d9d372bb6826bd81d3542a419d6 MD5(“快速的棕色狐狸跳了起来 懒狗。“)= e4d909c290d0fb1ca068ffaddf22cbd0
有人可以使用一些非常简单的例子向我解释这个MD5算法是如何工作的吗?
而且,也许您知道一些软件或代码可以将短语转换为MD5。如果是,请告诉我。
答案 0 :(得分:2)
忘掉endians:它只是一种编码信息的方式名称。
让我们按照维基百科MD5文章进行操作。您从输入消息开始。它可以是任意长的:常规创建2GB ISO文件的MD5哈希值,就像字符串的哈希长度十几个字符(例如密码)。
哈希将包含在寄存器a
,b
,c
和d
中。这些寄存器使用特殊值(h0-h3
)初始化。
该算法将输入分为16个4字节块(“16个32位小端字”)并应用特定的逻辑运算(函数F
,G
,H
和I
)部分输入和寄存器a
,b
,c
和d
的当前状态。它为每组16个4字节块执行64次。
处理完所有块后,a
,b
,c
和d
中剩余的内容是最后一个哈希值,您可以通过调用{ {1}}。
更新
如果你只是想能够计算一个哈希值,那么自己实现它是没有意义的,因为它已经完成并测试了可能的每一个重要语言:
md5sum testfile.txt
SQL(MySQL):
import md5
md5.new("Nobody inspects the spammish repetition").digest()
Java:
SELECT MD5('Nobody inspects the spammish repetition')
等
答案 1 :(得分:1)
Md5是一种哈希算法:它产生输入文本的签名,这样改变输入中的任何字母都会对签名产生重大的,不可预测的影响。
例如:
文本的md5签名'这是一个非常简短的文字看起来很正常'是'2bb1a5a5204aba95c886b3eb598c9d41'
相同文字的md5签名,附加一段时间,'这是一个很短的文字,看起来很正常。'是'870df12558aae47b40bf738290ba8554'
如您所见,签名有很大不同。这个属性使得md5适合作为一种“指纹识别”:两本只有一个字母相同的书具有完全不同的md5。此外,对于任何一本不同的书籍,两个md5几乎都不相同:碰撞极为罕见。
md5有很多实现,包括几个在线版本(here is one)。如果您想要特定语言的语言,请指明哪一个。
答案 2 :(得分:0)
MD5可怕地被打破了多年。如果您可以提供帮助,请勿用于任何目的。在新的应用程序中,使用SHA-2散列函数,如SHA-256。