【发布时间】:2015-11-12 14:08:52
【问题描述】:
我用 C++ 完成了 MD5 算法的实现,但它不能正常工作...我的哈希不正确。
只是为了理解: 如果我尝试使用 MD5 哈希算法对文件(64 字节)进行哈希处理,则必须发生以下情况:
// 512 Bit(data) 512 Bit(Padding)
// ------------- -------------
// |xxxxxxxxxxx| |10000000|64|
// ------------- -------------
//
// 1 - appended 1 Bit
// 0 - filled with zeros until 8 bytes before end of block
// 64 - 64 bit (8 Byte) representation of size of file
第一种:带数据块的MD5算法
第二个:使用 Padding 创建额外的块
第三个:MD5 算法与填充块
对吗?
【问题讨论】:
-
oh.. DAMN.... 我发现了错误.. 文件大小的 64 位表示的值必须是 Bit,而不是 Byte.. ...... :) :) :) 所以,就我而言,计数器不是 64。它必须是 64*8 (512)。