可以对 md5 进行哈希处理的字符串的最大长度是多少?或者:如果没有限制,那么 md5 输出值的最大长度是多少?
9 回答
MD5 将任意长度的消息处理成 128 位的固定长度输出,通常表示为 32 个十六进制数字的序列。
您可以有任何长度,但当然,如果字符串输入太长,计算机上可能会出现内存问题。输出始终为 32 个字符。
该算法旨在支持任意输入长度。即您可以计算大文件的哈希值,例如 DVD 的 ISO ...
如果输入有限制,它可能来自使用散列函数的环境。假设您要计算一个文件并且环境有一个 MAX_FILE 限制。
但输出字符串将始终相同:32 个十六进制字符(128 位)!
128 位 MD5 哈希表示为 32 个十六进制数字的序列。
您可能想要使用SHA-1而不是MD5,因为 MD5 被认为是损坏的。
您可以在此 Wikipedia 文章中阅读有关 MD5 漏洞的更多信息。
我所知道的 md5 的输入没有限制。一些实现要求在将整个输入加载到内存中,然后再将其传递给 md5 函数(即,实现作用于内存块,而不是流),但这不是算法本身的限制。输出始终为 128 位。请注意,md5 不是加密算法,而是加密哈希。这意味着您可以使用它来验证数据块的完整性,但不能反转散列。另请注意,md5 被视为已损坏,因此您不应将其用于任何与安全相关的事情(验证下载文件的完整性等仍然可以)。
md5 算法将消息长度附加到最后一个块的最后 64 位,因此可以公平地说消息可以是 2^64 位长(18 e18 位)。
MD5 输入的最大长度:最大可定义和可用的位流位定义约束流可能取决于操作系统、硬件约束、编程语言等...
MD5 输出长度:固定长度始终为 128 位 为了便于显示,它们通常以十六进制显示,这是因为每个十六进制数字 (0-1-2-3-4-5-6-7-8-9-ABCDEF)占用 4 位空间,因此其输出可以显示为 32 位十六进制数字。128 位 = 16 字节 = 32 个十六进制数字