MD5input/输出的最大长度
什么是可以有md5哈希的string的最大长度? 或者:如果没有限制,那么md5输出值的最大长度是多less?
MD5将任意长度的消息处理成128位的固定长度输出,通常表示为32个hex数字的序列。
- 消息的长度是无限的 。
追加长度
b的64位表示(添加填充位之前的消息长度)会被附加到上一步的结果中。 如果b大于2 ^ 64,则只使用b的低位64位。
- 散列总是128位。 如果您将其编码为hexstring,则可以对每个字符编码4位,并给出32个字符。
- MD5不是encryption。 你通常不能“解密”MD5哈希以得到原始string。
在这里看到更多。
您可以有任何长度,但当然,如果stringinput太长,计算机上可能会出现内存问题。 输出总是32个字符。
该algorithm已被devise为支持任意input长度。 也就是说,你可以计算像DVD的ISO这样的大文件的哈希值。
如果对input有限制,则可能来自使用散列函数的环境。 假设您要计算一个文件,并且该环境具有MAX_FILE限制。
但输出string将始终是相同的:32个hex字符(128位)!
一个128位的MD5散列表示为32个hex数字的序列。
您可能想要使用SHA-1而不是MD5 ,因为MD5被认为是坏的。
您可以在这篇维基百科文章中阅读有关MD5漏洞的更多信息。
我知道的md5的input没有限制。 一些实现需要在将整个input传递到md5函数之前将整个input加载到内存中(即实现作用于内存块而不是stream),但这不是algorithm本身的限制。 输出总是128位。 请注意,md5不是encryptionalgorithm,而是encryption哈希。 这意味着您可以使用它来validation大块数据的完整性,但不能反转散列。 另外请注意,md5被认为是坏的,所以你不应该用它做任何与安全有关的事情(validation下载文件等的完整性仍然是可以的)。