可以对 md5进行散列的字符串的最大长度是多少?或者: 如果没有限制,那么 md5输出值的最大长度是多少?
该算法被设计为支持任意输入长度。也就是说,你可以计算大文件的哈希值,比如 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。
附加长度
B 的64位表示形式(消息之前的长度) 填充位被添加)附加到前面的结果 在不太可能的情况下,b 大于2 ^ 64,那么只有 使用了低阶64位的 b。
详见 给你。
您可能希望使用 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,密码将不完全记录在数据库中,因此用户在登录系统时会遇到错误。