sha1sum、sha256sumなどでハッシュ化された場合、ゼロバイトテキストファイルはどのようにハッシュを生成できますか?ハッシュ値を生成するためにプログラムがハッシュするデータは何ですか?
タ
sha1sum、sha256sumなどでハッシュ化された場合、ゼロバイトテキストファイルはどのようにハッシュを生成できますか?ハッシュ値を生成するためにプログラムがハッシュするデータは何ですか?
タ
回答:
ハッシュアルゴリズムは、データがあるかどうかに関係なく、入力を読み取って処理します。これは有効で望ましい動作であり、特定の実装が正しいかどうかを確認するためにも使用されます。これは、すべての主要なアルゴリズムの「ヌルハッシュ」につながります。
まとめると:da39a3ee5e6b4b0d3255bfef95601890afd80709はどこでも空のファイルのsha1-hashであり、他のアルゴリズムのnullハッシュでも同じことが言えます。
Quick Hashのすべてのハッシュアルゴリズムは、Merkle–Damgård構造です。そのため、ブロックサイズの倍数までメッセージを埋め込みます。
Quick Hashのアルゴリズムは、1
ビット、0
必要な数のビット、最後にメッセージの長さを追加することでこれを実現します。
これにより、長さゼロのメッセージを含む、任意の長さのメッセージをハッシュできます。
(デニスとフィクサー1234の答えへのアドオン?)
簡潔に:
$ shasum -a 256 /dev/null
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null
すべての0バイトファイルには同じチェックサムがあります。
$ shasum -a 512 /dev/null
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null
$ shasum /dev/null
da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null
$ md5 /dev/null
MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e
(注:MD5は壊れています。「安全なハッシュ」ではありません。これは、WikipediaのMD5エントリに記載されています。)
したがって、たとえば、ここにリストされている安全なハッシュ値のいずれかを使用して、virustotal.comのファイルの無害性を検証しようとしている場合da39a3ee5e6b4b0d3255bfef95601890afd80709
、ファイルが実際に0バイト(またはフォルダーであったこと)紛らわしいことに、virustotalは0バイトのファイルであるかのようにハッシュします。