🤖

sha256sumを用いてファイルの検証をする

に公開

課題

  • ファイルの内容が同じものかどうかを検査する。

解決策

sha256sumコマンドを使用してハッシュ値を取得する

sha256sumコマンドを使用することで、対象ファイルのハッシュ値を取得することができます。
対象ファイルの中身が異なる場合にはハッシュ値が異なります。
試しにテキストファイルを1件作成して動作確認をします。

$ touch sample.txt

sha256sumコマンドでハッシュ値を出力します。

$ sha256sum sample.txt
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  sample.txt
<!-- 何度入力しても同じ出力が得られます。 -->
$ sha256sum sample.txt
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  sample.txt

次にテキストファイルに'hello'と追記します。

$ echo hello > sample.txt

変更を加えた状態で再度ハッシュ値を出力します。

$ sha256sum sample.txt
5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03  sample.txt

ちゃんとハッシュ値が変わっているのがわかります。
では一旦ファイルを削除して、再度ハッシュ値を確認するとどうでしょうか。

$ rm sample.txt
$ touch sample.txt
$ sha256sum sample.txt
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  sample.txt

このように内容が同じであればハッシュ値が同じになることがわかります。

SHA-256とは何か

SHA-256は、Secure Hash Algorithm 256-bitの略で、暗号学的ハッシュ関数の一つです。
データの要約を生成するために使用され、入力データがどれだけ大きくても、固定長の256ビット(32バイト)のハッシュ値を出力します。データの整合性を確認したり、デジタル署名の作成に利用されたりします。

SHA-1とは何が違うのか

  • ビット数が異なる: SHA-1は160ビットのハッシュ値を生成しますが、SHA-256は256ビットのハッシュ値を生成します。これにより、値の衝突も起きにくくなります。
  • 安全性: SHA-1は攻撃手法が見つかっているため、安全性に劣る

参考文献

https://manpages.ubuntu.com/manpages/noble/ja/man1/sha256sum.1.html
https://ja.wikipedia.org/wiki/SHA-2
https://e-words.jp/w/SHA-256.html
https://e-words.jp/w/SHA-1.html

Discussion