web-dev-qa-db-ja.com

sha256入力に制限はありますか?

パスワードなどの文字列をsha256でハッシュする場合、ハッシュする文字列の長さに制限はありますか?たとえば、64文字以下の文字列をハッシュすることだけが「安全」ですか?

37
Jackson

技術的には限界がありますが、かなり大きいです。 SHA-256に使用されるパディング方式では、入力のサイズ(ビット単位)を64ビットの数値として表現する必要があります。したがって、最大サイズは(264-1)/ 8バイト〜= 2'091'752テラバイト。

それは限界をレンダリングしますほぼ完全に理論的であり、実用的ではありません。

ほとんどの人はとにかくそれほど多くのデータのためのストレージを持っていませんが、たとえそれらがあったとしても、それをすべて連続して処理して単一のハッシュを生成することは、ほとんどが禁止することを考えるだろう時間を要するでしょう。

包絡線のような迅速な計算は、現在最速のエンタープライズSSDであっても1 トムのハードウェアに記載されており、帯域幅を改善するために16幅にストライプ化します。その量のデータを読み取るだけでも、約220年かかります。


1. 2016年4月現在。

64
Jerry Coffin

最大メッセージサイズ2以外は、このような制限はありません。64-1ビット。 SHA2は、実行可能ファイルのハッシュを生成するために頻繁に使用され、数十バイトよりはるかに大きくなる傾向があります。

6

上限はNIST標準 FIPS 180-4 で指定されています。上限の理由は、パディング方式です。メッセージの長さlは、パディング中に最後にメッセージに追加されます。

次に、バイナリ表現を使用して表現されたlに等しい64ビットブロックを追加します

したがって、NIST標準では、SHA-256でハッシュできる最大ファイルサイズは2 ^ 64です。

1
kelalaka