64-1)/8 字节 ~= 2'091'752 TB。
这使得极限几乎完全是理论上的,而不是实际的。
无论如何,大多数人都没有足够的存储空间,但即使他们有,串行处理所有数据以生成单个散列也会花费大多数人认为令人望而却步的时间。快速粗略的计算表明,即使使用 Tom 硬件上目前列出的最快企业级 SSD
1,并将其条带化为 16 宽以提高带宽,仅读取该数据量仍需要大约 220年。
1. 截至 2016 年 4 月。
64-1 位之外,没有这样的限制。 SHA2 经常用于生成可执行文件的哈希值,这些可执行文件往往比几十个字节大得多。
FIPS 180-4 中给出了上限。设置上限的原因是“填充方案”,以对抗 Merkle-Damgard 构造工件的 MOV 攻击。消息长度 l
最后在填充期间附加到消息中。
l
的64位块(约 2.305 艾字节 - 接近于因此,根据 NIST 标准,可以使用 SHA-256 进行哈希处理的最大文件大小为
2^64-1
估计的 NSA 犹他州数据中心的下限范围
,因此您不需要不用担心)。NIST 启用大小为零的消息的哈希。因此消息长度从
0
开始到 2^64-1
。
如果您需要对大于
2^64-1
的文件进行哈希处理,请使用具有 2^128-1
限制的 SHA-512 或使用没有限制的 SHA3。很有趣,你会在这里谈论“
字符”的数量。 例如:
密码不会是 2.3
exabytes“不,哈希没有真正的限制,你可以在里面放入数百万个字符”
虽然:“我们为密码字段设置了最大字符数”
因此我们可以防止这些拒绝服务攻击。