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


20

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

LinuxのQuickHash

端末コマンド

回答:


21

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

まとめると:da39a3ee5e6b4b0d3255bfef95601890afd80709はどこでも空のファイルのsha1-hashであり、他のアルゴリズムのnullハッシュでも同じことが言えます。


1
さて、あなたは毎日新しいことを学びます!すべてのアルゴリズムに「null値」があるとは知りませんでした。どうもありがとう。
Gizmo_the_Great

3
ハッシュアルゴリズムには、事前に設定された初期条件があります。これは、データを読み込むときに開始し、変化する数のようなものです。読み取るデータがない場合、ハッシュはその事前設定された初期条件の結果にすぎません。
ケビン

その理由は、sha1アルゴリズムがデータの長さ(この場合はゼロ)を追加し、メッセージにもフラグとパディングが追加されるためです。そのため、「データなし」でも、一部のデータが処理されます。
user92979 16

14

Quick Hashのすべてのハッシュアルゴリズムは、Merkle–Damgård構造です。そのため、ブロックサイズの倍数までメッセージを埋め込みます。

Quick Hashのアルゴリズムは、1ビット、0必要な数のビット、最後にメッセージの長さを追加することでこれを実現します。

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


編集の理由がわかりにくい場合は、最初にあなたの答えを読み違えて「わかりやすくするために」書き直し、それから私の編集が間違っていることに気付いて戻って修正しました。システムは同じ時間枠内にあったため、2つの説明を統合しました。
fixer1234

1

(デニスとフィクサー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バイトのファイルであるかのようにハッシュします。


これは現在の回答にどのように追加されますか?
マーテユハス

すべての0バイトファイルが同じチェックサムを持つことを懐疑論者が直接確認する方法を提供することによって、virustotal.comで0バイトファイルの無害性について議論するときに、いくつかの人々はこれに懐疑的でした。私はそれが解決しないでください、それはチェックサムがcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3eであれば、そのファイルが0バイトだったことは事実だ場合は、この質問に来る人のための方法が追加されますだと思うので。
マシューエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.