Hash sha256输入是否有限制?

Hash sha256输入是否有限制?,hash,sha256,Hash,Sha256,当使用sha256对字符串(如密码)进行散列时,我正在散列的字符串的长度是否有限制?例如,对的字符串进行散列是否只有“安全”没有这样的限制,除了最大消息大小264-1位之外。SHA2经常用于为可执行文件生成哈希,而可执行文件往往比几十个字节大得多。技术上有一个限制,但它相当大。SHA-256使用的填充方案要求输入的大小(以位为单位)表示为64位数字。因此,最大大小为(264-1)/8字节~=2'091'752 TB 这使得限制几乎完全是理论上的,而不是实际的 大多数人无论如何都没有存储这么多的数

当使用sha256对字符串(如密码)进行散列时,我正在散列的字符串的长度是否有限制?例如,对的字符串进行散列是否只有“安全”没有这样的限制,除了最大消息大小264-1位之外。SHA2经常用于为可执行文件生成哈希,而可执行文件往往比几十个字节大得多。

技术上有一个限制,但它相当大。SHA-256使用的填充方案要求输入的大小(以位为单位)表示为64位数字。因此,最大大小为(264-1)/8字节~=2'091'752 TB

这使得限制几乎完全是理论上的,而不是实际的

大多数人无论如何都没有存储这么多的数据,但即使如此,也要连续地处理所有的数据以产生单个散列将花费大量的时间来考虑禁止。 快速回溯式的计算表明,即使Tom的硬件上目前列出了最快的企业SSD 1,并将其分条16宽以提高带宽,仅读取该数量的数据仍需要大约220年


1.截至2016年4月。
NIST标准中给出了上限。设置上限的原因是填充方案。消息长度
l
最后在填充期间追加到消息中

然后附加与表示的数字
l
相等的64位块 使用二进制表示法


因此,根据NIST标准,SHA-256可以散列的最大文件大小为2^64。

我试图理解您的答案:您是指2^64}-1位还是65位长度?2^64是相当多的位。前者,@Stefan。是的,那是很多东西。:-)哈哈-好的,是的,我不需要那么多,但知道这一点很好。非常感谢。分组密码技术可应用于大于等于2^64字节的输入。@ErkinAlpGüney:SHA-256不是分组密码(或任何其他类型的密码)。这是一个杂烩。当然,散列也可以应用于大型输入——但大于2^64位(更不用说2^64字节)并不是大多数人需要担心的问题。这样做的人需要使用SHA-256以外的东西来完成(尽管根据他们的需要,他们唯一需要改变的部分可能是填充物)。