こんばんは、FujiNextNetです。
Macに入っているターミナルというアプリでハッシュ値の確認・計算(算出・演算)をして、
コピーした物が同一のものであるかの確認をする。
というお話になります。
ハッシュ値は、写真や動画を扱う人などは、よく使いますね。
コピーした物が同一の物かどうかの確認ができます。
コピー時に何かしらのエラーがありノイズが入った、何か破損したなどの時は
もちろん別の物になってしまうので、ハッシュも変わります。
ハッシュ値の計算には有名なものでMD5やSHA-1、SHA-2(SHA-256)などがあります。
MD5やSHA-1は普及していて、今現在も非常に多く使われています。
業務では、MD5を多く使っています。
私は個人的にSHA-256も確認で使用していますが、
コピーしたものが同一のものであるかの確認はMD5で十分だと思います。
セキュリティ関連ではSHA-256レベルでも弱いというお話を伺ったことがありますが、僕はそのようなことに詳しくないので、パルプンテです。
それでは、ハッシュ値の算出ですが、
アプリのターミナルを立ち上げます。
MD5は
md5(半角スペース)複数ファイルをドラッグ&ドロップ
または
openssl md5(半角スペース)複数ファイルをドラッグ&ドロップ
(数値は変わりません)
SHA-1は
openssl sha1(半角スペース)複数ファイルをドラッグ&ドロップ
または
shasum -a 1(半角スペース)複数ファイルをドラッグ&ドロップ
(数値は変わりませんが、記載が後ろか前かになります)
SHA256は
shasum -a 256(半角スペース)複数ファイルをドラッグ&ドロップ
そして、「Returnキー(Enterキー)」を、バチン!
たったのこれだけです。
openssl md5例
001~018までの拡張子がpngやjpgの画像データを使ってみます。
001という名のフォルダにコピー元のその18枚の画像を入れ、
a001という名のフォルダにコピーした18枚の画像を入れ、
a002という名のフォルダには、同じように18枚コピーして、イタズラで001.pngのみ渦巻きを描いて落書きをしてみました。
001フォルダ
a001
a002
MD5でハッシュ値を算出してみると
001フォルダ
a001フォルダ
a002フォルダ
細かい字ですが、見比べてみるとa002の001pngのみ差異があるのが分かります。
それですので、a001のコピーは上手くいった。
a002のコピーは001.pngのみエラーがあったので、再度「001.png」のコピーしよう。
となります。
今度はSHA256でハッシュ値を算出してみる
001フォルダ
⬇︎
a001フォルダ
⬇︎
a002フォルダ
⬇︎
これまた細かい字ですが、見比べてみるとa002の001pngのみ差異があるのが分かります。
同じく、a001のコピーは上手くいった。
a002のコピーは001.pngのみエラーがあったので、再度「001.png」のコピーしよう。
となります。
このようにして、コピーしたものが同一であるかの確認ができます。
コピー時に、
自動でそれをして安全性を持ってコピーしてくれるものは無いのか?
というとあります。
有名どころで、MacではRapidCopy
ベリファイというチェック項目がありますが、
そのベリファイが、それに当たります。
同時にハッシュ値の算出もして、エラーがあった場合は、最下段の項目に記載されます。
複数コピーする場合は、エラーファイルをスキップして、
コピーを進行してくれますので便利ですね。
WindowsではFastCopyですね
同じくベリファイがあります。
しかし、1つ僕が知っている問題では、バックアップを外付けHDDにしますが、
その時にアプリケーションをRapidCopyで安全にコピーしようと思いコピーすると、
実は、開発元がRapidCopyとなり、立ち上げられなくなるアプリがあります。
まぁ、再DLすれば良いだけなのですが、複数ある場合にはその分手間が掛かるのでご注意ください。
その際は、Mac機能の純粋なバックアップ(Time Machine)やコピー機能でコピーすることをお勧めします。
因みに、コピーソフトのベリファイで使われやすいxxHashというものもあります。
算出の複雑レベルは
複雑 SHA-256
↑
MD5、SHA-1
↑
簡単 xxHash
という具合
同じくその衝突の可能性のレベルも
低い SHA-256
↑
MD5、SHA-1
↑
高い xxHash
という具合
SHA-256 ≒ MD5・SHA-1 ≒ xxHash
という具合でしょうか?