web-dev-qa-db-ja.com

ゼロバイトファイルはどのようにしてハッシュ値を生成できますか?

ゼロバイトのテキストファイルは、sha1sum、sha256sumなどでハッシュした場合、どのようにしてハッシュを生成できますか?プログラムはどのデータをハッシュしてハッシュ値を生成しますか?

QuickHash in Linux

Terminal Commands

21
Gizmo_the_Great

ハッシュアルゴリズムは、データがあるかどうかに関係なく、入力を読み取って処理します。これは有効で望ましい動作であり、特定の実装が正しいかどうかを確認するためにも使用されます。これにより、すべての主要なアルゴリズムで「ヌルハッシュ」が発生します。

要約すると、da39a3ee5e6b4b0d3255bfef95601890afd80709は、空のファイルのすべての場所でのsha1-hashです。これは、他のアルゴリズムのヌルハッシュでも同じです。

22
Sascha Kaupp

クイックハッシュのすべてのハッシュアルゴリズムは Merkle–Damgård構文 です。そのため、メッセージはブロックサイズの倍数になるようにパディングされます。

クイックハッシュのアルゴリズムは、1ビット、できるだけ多く0ビット、必要に応じて、最後にメッセージ長。

これにより、長さがゼロのメッセージを含む、任意の長さのメッセージをハッシュできます。

14
Dennis

(デニスのアドオンとfixer1234の答え?)

簡潔に:

_$ 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 にあるファイルの無害性を、ここにリストされている安全なハッシュ値の1つで検証しようとしている場合は、たとえば、 _da39a3ee5e6b4b0d3255bfef95601890afd80709_これで、ファイルが実際に0バイトである(または、ウイルス合計が混乱して、0バイトのファイルであるかのようにハッシュされるフォルダーであった)と確信できます。

1
Matthew Elvey