LinuxやFreeBSDでファイルのチェックサムの作成と確認する方法
スポンサーリンク
このドキュメントの内容は、以下の通りです。
はじめに
ファイルをインターネットからダウンロードやアップロードしたときに、ファイルが壊れていて、開けない、という場面に遭遇したことはありますでしょうか?データ転送はしばしば失敗し、データが壊れてしまうことがあります。データが壊れていないか確認する方法として、「ファイルのチェックサムを計算しておいて、転送後にチェックサムを再計算して確認する」が考えられます。
チェックサムを計算する方法として、いくつかのコマンドがあります。今すぐコマンドだけ知りたい方向けに、いくつか例を挙げます。
sha256sum コマンドの例。
$ sha256sum /etc/ssh/* > /tmp/ssh.txt $ sha256sum -c /tmp/ssh.txt1つ目がチェックサムの作成です。
2つ目がチェックサムの確認です。
それでは、もう少し詳しく説明しましょう。
チェックサムのコマンド
チェックサムのコマンドはいろいろあります。時代にあったチェックサムコマンドを使えばよいと思います。チェックサムコマンドの中には、SHA-256 や SHA-1, MD5 といった一方向ハッシュを用いるものがあります。
今の時代なら MD5 や SHA-1 よりは、 SHA-512, SHA-256 あたりが良いでしょう。
お使いのOSによって、チェックサムを計算するコマンドが異なってきます。
使っているLinux/Unixにどのようなチェックサムコマンドがあるかは、 /usr/bin を確認すれば、わかります。
ls /usr/bin/*sum
おそらく、Linux なら以下のチェックサムを計算するコマンドがあるのではないでしょうか。
- sha512sum
- sha384sum
- sha256sum
- sha224sum
- sha1sum
- md5sum
- chksum
- sum
また、OpenSSLコマンドを用いることもできます。
OpenSSL コマンドであれば
- Linux
- FreeBSD
- Mac
- Windows
- 例えば WSL のLinuxの中 と幅広く使うことができます。
手順
チェックサムのデータの作成と確認は、以下のような手順となります。
- チェックサムを計算したいデータを用意したら、チェックサムを計算します。
- チェックサムの計算結果は適当なファイル(チェックサムのファイル)に保存しておきます(。
- データとチェックサムのファイルを転送します。
- データの転送が終わったら、データの転送先で、データとチェックサムファイルを使用して、データが正しく転送できたか確認します。
チェックサムの作成
さて、チェックサムを作成してみましょう。
/bin/ls コマンドのチェックサムを sha256sum で計算してみましょう。
$ sha256sum /bin/ls fea4ce7047b56e5e03767eb6dae03676936e56160f5022374a3422fd0c06a8bc /bin/ls
それでは、チェックサムの計算結果を /tmp/ls.txt に保存しておきます。
$ sha256sum /bin/ls >/tmp/ls.txt
チェックサムの確認
「チェックサムの作成」で作成した /tmp/ls.txt を使って、チェックサムの確認をしてみましょう。 sha256sum の -c オプションを使って、チェックサムのファイルを指定します。 sha256sum はチェックサムのファイルを読み込み、指定されたファイルのチェックサムを計算し、同じ結果になるかを確認します。
$ sha256sum -c /tmp/ls.txt /bin/ls: OK
OpenSSLコマンドでチェックサムを計算する
openssl の dgst コマンドで、チェックサムを計算できます。
実行例を以下に示します。
openssl dgst -sha256 /tmp/a
sha-256, md5 であれば、以下の通りです。
openssl dgst -sha512 /tmp/a openssl dgst -md5 /tmp/a
チェックする方法がないので、適当なファイルにリダイレクトして、チェックサムのファイルを diff すればよいと考えられます。
server1$ openssl dgst -sha256 /tmp/a > server1.txt server2$ openssl dgst -sha256 /tmp/a > server2.txt server2$ diff server1.txt server2.txt
FreeBSDのハッシュ系コマンド
Linux 系のハッシュ計算のコマンドは、以下のフォーマットです。
$ md5sum /tmp/a 60b725f10c9c85c70d97880dfe8191b3 /tmp/a $ sha256sum /tmp/a 87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7 /tmp/a
一方で、FreeBSDのハッシュ計算のコマンドは、以下のフォーマットです。
$ md5 /tmp/a MD5 (/tmp/a) = 14758f1afd44c09b7992073ccf00b43d
つまり、Linux と FreeBSD のハッシュ系コマンドの出力フォーマットが異なります。
こうなると、比較をどうやってやるか?という悩みが出てきます。
FreeBSD の md5 や sha256 などのコマンドには、 -r オプションがあり、出力を逆にすることができます。以下に例を示します。
$ md5 /tmp/a MD5 (/tmp/a) = 14758f1afd44c09b7992073ccf00b43d $ md5 -r /tmp/a 14758f1afd44c09b7992073ccf00b43d /tmp/a
このように、出力を逆にすることができます。
md5 や sha256 コマンドには、 Linux の sha256sum のようなチェックオプションがないため、目視かdiffコマンドに任せる、といった方法で、ハッシュ値を確認する必要があります。
まとめ
- OpenSSL コマンドなら環境に影響を受けずに汎用的に使えるが、チェックオプションがない。
- FreeBSD の md5 や sha256 は、 -r オプションで Linux の *sum 系のコマンドと同じフォーマットで出力できる。
- Linux 系なら sha256sum などを使って、チェックサムを計算し、 sha256sum -c hash.txt でチェックサムをチェックできる。
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12