広告 iPhone、PC 関連

Appleショートカットアプリを使って、ファイルのハッシュ値を比較するツールを作成してみました。

Appleショートカットアプリを利用して、ファイルAとファイルBのハッシュ値を比較してファイルの内容が一致しているか否かを調べるツールを作成しました。 

用途としては、例えば、可逆圧縮にエンコードしたファイル(ex. FLAC ALAC)をデコードした時の復元性の確認や、あるファイルが改竄されているか否かを確認したい時などに使えます。

 

 

ハッシュ値について

ハッシュ(hash)値とは、あるデータ(例えばファイルなど)に対して計算される固定長の文字列や数字のことです。 この値は、元のデータの内容に基づいて計算され、データが変更されていないか、あるいは一致するかどうかを確認するために使用されます。 ハッシュ値の計算は簡単です。 ターミナルを開いて下のコード(ファイルはフルパス)を実行すると、ファイルのハッシュ値が表示されます。

ハッシュ値の計算

 bash command
sha256sum "original.wav"
# 実行すると グリーンの文字列がハッシュ値です。
5a7caf857cb52ac0bb44581669f61f7d6f88ea35f5d9f7140c9f16fa789e8ef1 original.wav

異なる入力から同じハッシュ値が生成される現象を衝突と呼びます。 SHA-256の場合、衝突が発生する確率は「2の128乗分の1」であり、実質的にゼロに近いと言えます。 つまり、ファイルAとファイルBのハッシュ値を調べて一致するか否かを比較することで、ファイルの内容が同じか否かを調べることができます。

 

オペレータ
オペレータ
ターミナルを開いて、ファイルAとファイルBのハッシュ値を計算しハッシュ値の長い文字列を比較するのは面倒ですので、アップルショートカットアプリを使ってハッシュ値を比較するツールを作成してみますね。

 

ショートカットで、ファイルのハッシュ値を比較するアプリの作成

Apple・ショートカットには、「ハッシュ値を生成する」アクションが付属しています。 このアクションでは、ハッシュ値の4種類(MD5、SHA-1、SHA-256、SHA-512)から選択可能です。 今回は、SHA-256を選択しています。

このショートカット・アプリの名前は、ハッシュ値比較にしました。

Step
1
アクションの配置・プログラム

ショートカット・アプリを起動して「ファイル」>「新規ショートカット」をクリックすると、まっさらなショートカット編集画面が現れます。 ここに下の様に【アクション】をキーワード検索して当該アクションをドラッグして配置します。 

  1. 【通知】アクション:
  2. 【ファイルを選択】アクション:ファイルA(比較元)を選択
  3. 【ハッシュを生成】アクション:ファイルAのハッシュ値が生成される→ハッシュ値A
  4. 【通知】アクション:
  5. 【ファイルを選択】アクション:ファイルB(比較・対象)を選択
  6. 【ハッシュを生成】アクション:ファイルBのハッシュ値が生成される→ハッシュ値B
  7. 【if文】アクション:ハッシュ値Aとハッシュ値Bを比較
  8.   一致した場合:【アラート】アクション:一致と表示しハッシュ値Aを表示させる
  9. 【if文・その他】
  10.   不一致の場合:【テキスト】アクション:ハッシュ値Aとハッシュ値Bを入れる
  11.   【アラート】アクション:不一致と表示し【テキスト】のハッシュ値を表示させる
  12. 【if文・終了】
実際のアクション配置状況は下記を参照してください。
(着目すべきポイントを赤矢印赤枠で示します)

Step
2
ここがポイント、変数の扱い

このショートカットで使用している変数は、(ハッシュ値A)と(ハッシュ値B)で、これがマジック変数です。 最初の【ハッシュを生成】アクションが(ハッシュ値A)として、次の【ハッシュを生成】アクションが(ハッシュ値B)として出力されます。 例えば、【if文】アクションで、変数の受け手として比較する項目を右クリック(又はControlキーを押しながらクリック)して「変数を挿入」>「変数を選択」をクリックすると各アクションの下にマジック変数(青いトークン)が現れるので、受け取りたい変数をクリックします。 これで、変数がリンクされる様になります。 また、変数名(ハッシュ値A)や(ハッシュ値B)は、初めは単純な(ハッシュ)表記になっており、分かり難いので、変数名を変更しています。 変数名を分かり易く変更するには、受け取るマジック変数をクリックして変数名を変更できます。

マジック変数を挿入したい場所を右クリックして「🪄変数を選択」すると👉

アクションの下にマジック変数(青いトークン)が現れるので、受け取るべき変数をクリックする

マジック変数の取り扱いは、慣れないと若干分かり難いです。 マジック変数について、詳しく知りたい場合は下の記事をご覧ください

更に詳しくmacOSショートカットアプリ:これで分かったマジック変数の取扱い

Appleショートカットアプリは簡単にプログラムが組めますが、独特の対話型UIのため特に(シェルスクリプトから実行)アクションに引き継ぐマジック変数の扱いが良く理解出来ませんでした。 今回、ファイル操 ...

 

Step
3
「ハッシュ値比較」アプリの完成

以上の手順が完了したら、ショートカット編集画面の右上にある ▶ ボタンを押して実行します。  ファイルA、Bのハッシュ値の比較状況に応じて【アラートアクション】に以下が表示されます。

ハッシュ値 一致

ハッシュ値 不一致

完成したショートカットのバッジは以下です。 ▶ を押下すると、「ハッシュ値比較」アプリが実行できます。

 

【参考】シェルスクリプト・アクションを使ったショートカットアプリ

シェルスクリプト・アクションを使っても、ファイルのハッシュ値比較を行えます。 参考として、以下にシェルスクリプト・アクションを使った場合を示します。

 

 

事例紹介

参 照FLACとALACが元のWAVファイルに復元されるか?ハッシュ値で調べてみました。

過去の記事では、FLACやALACフォーマットをAudacity上で元のWAVファイルとの絶対誤差から復元(可逆性)を確認しました。 FLACやALACの可逆性を確認する方法の一つに「ファイルのハッシ ...

 

以上、ファイルのハッシュ値を比較するアプリの作成方法の紹介でした。

 

スポンサーリンク