首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充与MD5算法

填充与MD5算法
EN

Cryptography用户
提问于 2021-07-17 11:49:35
回答 1查看 290关注 0票数 -1

在MD5中,如果是M=100,我们如何在其上执行填充,每一轮需要多少块?

这些是理解填充和圆圈的一般问题。

EN

回答 1

Cryptography用户

发布于 2021-07-17 15:57:39

大多数加密哈希函数以多字节块的形式处理数据,因为这更有效。对于使用32位字的算法,如MD5和SHA-256,它们通常有64个字节大小;对于使用64位字的算法,如SHA-512或BLAKE2b,通常是128个字节块;而SHA-3仍然不同。

这些哈希函数中的每一个都包含一个压缩函数,它接受以前的散列状态(或开始时的初始状态)和一个数据块,并将它们组合成新的状态。此压缩函数包含一定数量的轮;在每个块上执行的轮数相同。然后,在处理完最后一个块之后,从状态中提取散列值,在许多情况下,状态值只是状态数据的全部或部分的副本。

在Merkle mgard函数中,如MD5、SHA-256和SHA-512,填充由两部分完成。首先,以位为单位计算数据的长度。在32位函数(如MD5和SHA-256 )中,这通常是一个64位(8字节)值;在64位函数中,通常是128位(16字节)值.对数据进行填充,这样就可以添加一个1位,然后需要多少个0位才能为长度留出准确的空间。所以对于MD5或SHA-256,一个55字节的消息将有一个1位,7个0位,然后是长度.然而,一条56字节的消息将有1位,63位用于填充块,然后另有448 0位用于填充下一个块,然后是长度,因为当前块中没有1位和长度的空间。不同的散列算法使用的方式不同;SHA-3和BLAKE2b都使用了不同的技术。

至于轮,在压缩函数中处理块时,我们通常会讨论三种不同类型的轮。有几个循环,比如在MD5和BLAKE2b中,我们每一轮处理一个消息字;MD5有四个这样的循环,BLAKE2b有12个。还有一些算法,比如SHA-256和SHA-512,其中块中的消息词被展开成多个单词序列(分别为64和80 ),每一轮都处理其中的一个扩展单词。在SHA-3中,我们使用已经进入XORed的数据对整个状态进行操作,而每一轮运行在整个状态上。

实际上,几乎没有人使用不是字节整数的消息,因为在实际硬件上使用它们往往不方便。但是对于MD5或SHA-256,一个100位的消息将被填充一个1位,347 0位(以产生448位),然后64位的长度将被附加来填充最后的块(512位,或64字节)。

当您特别询问MD5时,我还在这里讨论了其他几个算法,因为算法在许多重要方面有所不同,因此不应该再使用MD5,因此更安全的算法的工作方式也会有所不同。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/92124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档