MD5输入/输出的最大长度

可以对 md5进行散列的字符串的最大长度是多少?或者: 如果没有限制,那么 md5输出值的最大长度是多少?

249963 次浏览

该算法被设计为支持任意输入长度。也就是说,你可以计算大文件的哈希值,比如 DVD 的 ISO..。

如果对输入有限制,那么它可能来自使用哈希函数的环境。假设您想要计算一个文件,并且环境有一个 MAX _ FILE 限制。

但是输出字符串总是相同的: 32个十六进制字符(128位) !

MD5将任意长度的消息处理成固定长度的128位输出,通常表示为32个十六进制数字的序列。

128位 MD5哈希表示为32个十六进制数字的序列。

您可以使用任何长度,但是当然,如果 String 输入太长,计算机上可能会出现内存问题。输出总是32个字符。

据我所知,md5的输入没有限制。有些实现要求在将整个输入传递到 md5函数之前将其加载到内存中(即,实现作用于内存块,而不是流) ,但这并不是算法本身的局限性。输出总是128位。注意,md5不是一个加密算法,而是一个加密散列。这意味着您可以使用它来验证数据块的完整性,但是不能反向散列。 还要注意的是,md5被认为是破碎的,因此您不应该将其用于任何与安全相关的事情(验证下载文件的完整性等仍然是可以的)。

附加长度

B 的64位表示形式(消息之前的长度) 填充位被添加)附加到前面的结果 在不太可能的情况下,b 大于2 ^ 64,那么只有 使用了低阶64位的 b。

  • 散列总是128位。如果将其编码为十六进制字符串,则每个字符可以编码4位,给出32个字符。
  • MD5不是加密的。通常不能“解密”MD5散列来获得原始字符串。

详见 给你

您可能希望使用 SHA-1而不是 MD5,因为 MD5被认为是坏的。

您可以在 这篇维基百科的文章中了解更多关于 MD5漏洞的信息。

Md5算法将消息长度追加到最后一个块的最后64位,因此可以公平地说,消息长度可以是2 ^ 64位(18 e18位)。

MD5输入的最大长度: 可定义和可用的最大位流 位定义约束流可以依赖于操作系统、硬件约束、编程语言等。

MD5输出的长度: 固定长度总是128位 为了便于显示,它们通常以十六进制显示,因为每个十六进制数字(0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F)占用4位空间,所以它的输出可以显示为32个十六进制数字。 128位 = 16字节 = 32个十六进制数字

Md5的输出总是32个字符。因此,在数据库中为密码设置字符限制时,不要给出低于32个字符的值。如果给出的值低于32,密码将不完全记录在数据库中,因此用户在登录系统时会遇到错误。