【发布时间】:2011-05-06 16:13:50
【问题描述】:
我正在尝试在 Python 中编写一个 md5 散列函数,但它似乎不起作用。我已将问题隔离到要散列的消息位。是的,我实际上是在将每个字节转换为位并形成一个位消息(我想在位级别上研究算法)。这就是事情分崩离析的地方;我的位串格式不正确。
最简单的消息是“”,它的长度为 0 字节,填充将是一个“1”,后跟(或不)511 个“0”(最后 64 位表示消息长度,正如已经说过的,它只是0).
10000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000 000000000000000000000000000000000
我一次将 32 位数据块输入转换函数。我尝试将 1 手动定位在第一个块以及最后一个块(小端)中的所有位置。 “1”应该在哪里?
谢谢。
更新:输入转换的第一个 32 位字的正确位置实际上应该是:00000000000000000000000010000000 其中int(x,2) 是128 这个混乱是由于我的@987654325 @ 转换格式使用int() 将位字符串解释为整数数据,int() 采用小端格式二进制,因此 100.... 是一个非常大的数字。
【问题讨论】:
-
你也可以在那里寻找详细的排列步骤:github.com/MrBlackk/md5_sha256-512_debugger
标签: cryptography md5 hash