Windows標準のコマンドで転送前後のファイルの整合性を確認する方法
仕事で取引先とファイルのやりとりが発生し、
ファイルの転送前後で整合性を調べたい時があります。
具体的には次の事案のようなとき。
・確実に相手に正常なファイルを届けたいとき
・圧縮ファイルの転送後、正常に解凍できなかったとき
・転送後、実行ファイルが、正常に実行できなかったとき
・開くと文字化けしていたとき
・ネットの接続が不安定で、正常にファイルの転送が行われたか確認したいとき
転送をするということは、
途中でインターネットなどの仲介がおこなわれており、
その過程で、正常に転送できたかどうかの切り分けが、
必要になるケースがあります。
そんなとき、
Windows標準のコマンドによって、
転送前の値と
転送後の値を
比較し、
値が同じであれば、同じファイルである。
といった判定が行える機能があります。
具体的には、
コマンドツールから「certutil -hashfile」というコマンドを使います。
certutil -hashfile
には、ハッシュというものがあり、以下の種類があります。
MD2
MD4
MD5
SHA1
SHA256
SHA384
SHA512
以下の「-?」オプションで仕様を細かく確認できます。
C:\workdir>certutil -hashfile -?
使用法:
CertUtil [オプション] -hashfile InFile [HashAlgorithm]
ファイルに暗号化ハッシュを生成し表示します
オプション:
-Unicode -- リダイレクトされた出力を Unicode として書き込む
-gmt -- 時刻を GMT で表示します
-seconds -- 時間を秒とミリ秒で表示します
-v -- メッセージを詳細に表示します
-privatekey -- パスワードと秘密キーのデータを表示します
-pin PIN -- スマート カードの PIN
-sid WELL_KNOWN_SID_TYPE -- 数値 SID
22 -- ローカル システム
23 -- ローカル サービス
24 -- ネットワーク サービス
ハッシュ アルゴリズム: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
CertUtil -? -- 動詞の一覧 (コマンドの一覧) を表示します
CertUtil -hashfile -? -- "hashfile" 動詞のヘルプ テキストを表示します
CertUtil -v -? -- すべての動詞のヘルプ テキストをすべて表示します
C:\workdir>
使用法:
CertUtil [オプション] -hashfile InFile [HashAlgorithm]
ファイルに暗号化ハッシュを生成し表示します
オプション:
-Unicode -- リダイレクトされた出力を Unicode として書き込む
-gmt -- 時刻を GMT で表示します
-seconds -- 時間を秒とミリ秒で表示します
-v -- メッセージを詳細に表示します
-privatekey -- パスワードと秘密キーのデータを表示します
-pin PIN -- スマート カードの PIN
-sid WELL_KNOWN_SID_TYPE -- 数値 SID
22 -- ローカル システム
23 -- ローカル サービス
24 -- ネットワーク サービス
ハッシュ アルゴリズム: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
CertUtil -? -- 動詞の一覧 (コマンドの一覧) を表示します
CertUtil -hashfile -? -- "hashfile" 動詞のヘルプ テキストを表示します
CertUtil -v -? -- すべての動詞のヘルプ テキストをすべて表示します
C:\workdir>
以下は具体的な使用例です。
C:\workdir>certutil -hashfile test-file.txt md5
MD5 ハッシュ (対象 test-file.txt):
47bce5c74f589f4867dbd57e9ca9f808
CertUtil: -hashfile コマンドは正常に完了しました。
C:\workdir>
MD5 ハッシュ (対象 test-file.txt):
47bce5c74f589f4867dbd57e9ca9f808
CertUtil: -hashfile コマンドは正常に完了しました。
C:\workdir>
この中の「47bce…808」がその値です。
この値を転送前と転送後で同じかどうか確認し、
そのファイルが正常に転送されたかどうか判定することができます。
ご覧いただき、ありがとうございました。