ハッシュで 2 つのテキストを比較
ハッシュ化するテキストを入力してください。
2 つの長い文字列は、ダイジェストが同一である場合にのみ同一です。それぞれのテキストを同じアルゴリズムでハッシュし、2 つの短い値を比べてください。1 文字、スペース、改行が違うだけで、結果はまったく別になります。
2 つのテキストが一致するか確認する方法
-
1
最初のテキストをハッシュ
最初のテキストを貼り付け、SHA-256 を選んだまま生成します。ダイジェストをコピーするか、メモしておきます。
-
2
2 つ目のテキストで再度実行
同じアルゴリズムを使い、テキストを 2 つ目のバージョンに差し替えます。
-
3
ダイジェストを比較
64 文字がすべて同じなら、テキストは同じバイト列です。1 文字でも違えば、テキストも違います。
-
4
必要に応じて絞り込む
違いがある場合は、それぞれのテキストの小さな部分をハッシュして、変更された段落を特定します。
ハッシュが信頼できる比較方法である理由
優れたハッシュ関数は、異なる入力をそれぞれ異なる、予測できないダイジェストに変換します。SHA-256 では、異なる 2 つのテキストで同じダイジェストを作る既知の方法はありません。そのため、ダイジェストが一致すれば、実用上は内容が同一だと言えます。ダイジェストは短いので、ページ全体ではなく 64 文字を比べるだけで済みます。
具体例
| テキスト | SHA-256 |
|---|---|
| hello | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
| Hello | 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969 |
2 つのテキストは大文字 1 文字だけ違いますが、ダイジェストには目に見える共通点がありません。そのため、わずかな編集でも明らかになります。
違いとして扱われるもの
比較はバイト単位で行われます。次のものはすべてダイジェストを変えます。
- 行末の余分なスペース
- テキスト末尾の改行
- 画面上では同じに見える別の種類のアポストロフィやダッシュ
- 同じ見た目でも入力方法が違うアクセント付き文字(基底文字と独立した結合記号の組み合わせと、合成済みの 1 文字)
2 つのテキストが同じに見えるのにダイジェストが違う場合、こうした目に見えない違いが原因である可能性が高いです。末尾の改行を付けた場合と付けない場合でハッシュすれば、すぐに確かめられます。
アルゴリズムの選び方
2 つのテキストには同じアルゴリズムを使ってください。SHA-256 は安全な標準です。MD5 と SHA-1 も通常の違いは検出できますが、誰かが意図的に衝突を作るおそれがある場合は使わないでください。CRC32 は短いものの、大量のデータに対しては弱くなります。
このツールは、ハッシュしたテキストについてのすべてのダイジェストを全一覧に表示するため、1 回の操作で複数のアルゴリズムを比べられることにも注意してください。
実際の作業の流れ
元のテキストのダイジェストを、メモやチケットに残しておきます。新しいバージョンが届いたら、同じアルゴリズムでハッシュして比べます。設定ファイルの断片、契約条項、法律文書、テンプレートの文面など、何も変わっていないことを証明する必要がある場合に有効です。変更点の一覧を作るのではなく、変わっていないことを示せます。
ダイジェストが違うとき
内容が間違っていると決めつけないでください。まずは基本的な原因を確認します。コピーしたテキストには、末尾のスペース、異なる改行コード、Web ページやワープロ由来の見えない文字が含まれていることがあります。両方を同じ方法で整えてから、再度ハッシュしてください。それでも違う場合は、各テキストを段落に分けてそれぞれハッシュし、ペアを比べていって変更された段落を見つけてください。
よくある質問
SHA-256 や SHA-512 であれば、実用上は同一と言えます。MD5、SHA-1、CRC32 の場合、一致は偶発的な誤りに対する強い証拠ですが、意図的に作られた衝突に対しては十分ではありません。
はい。同じ行でも順番が違えば、バイトの並びが異なるためダイジェストも異なります。
いいえ。一度に 1 つのテキストをハッシュするので、ダイジェストはご自身で比べてください。違いをハイライトする機能はありません。
はい。Hello と hello は異なるダイジェストになります。大文字小文字を区別しない場合は、先に両方を同じ大文字小文字に変換してください。
関連ツール
ヴィジュネル暗号エンコーダー
キーワードを使って古典的なヴィジュネル暗号でメッセージを暗号化・復号します。ラテン文字 A-Z をずらし、大文字・小文字、スペース、句読点をそのまま保ちます。
数字から文字への暗号
A=1、B=2 の対応(A1Z26)で数字を文字に、文字を数字に変換します。パズルや謎解き、脱出ゲームの手がかりに。
CSRジェネレーター
ブラウザでPKCS#10形式のCSRと対応するRSA秘密鍵を作成。DNS名やIPアドレスをSANに追加し、PEMファイルをダウンロードできます。
WeiからEtherへの変換ツール
Wei を Ether(ETH)に、浮動小数点の丸めなしの正確な計算で変換します。1 ETH = 10^18 Wei。
パスフレーズジェネレーター
ランダムな一般的な単語から覚えやすいパスフレーズを生成します。単語数、区切り文字、大文字化、末尾に付ける数字を調整できます。
SSH 鍵ジェネレーター
RSA の SSH 鍵ペア(2048、3072、4096 ビット)をすべてブラウザ内で生成します。秘密鍵も公開鍵もお使いのデバイスから外に出ません。コメントを追加して両方をダウンロードできます。
このツールは他の言語でも利用できます
- เปรียบเทียบข้อความสองชุดด้วยแฮช [TH]
- Porównaj dwa teksty za pomocą skrótu [PL]
- So sánh hai văn bản bằng mã băm [VI]
- Bandingkan Dua Teks dengan Hash [ID]
- مقارنة نصين باستخدام التجزئة [AR]
- Zwei Texte mit einem Hash vergleichen [DE]
- Compare dois textos com um hash [PT]
- Comparar dos textos con un hash [ES]
- 해시로 두 텍스트 비교하기 [KO]
- Jämför två texter med en hash [SV]
- Comparer deux textes avec un hash [FR]
- Twee teksten vergelijken met een hash [NL]
- Compare Two Texts With a Hash [EN]
- Confrontare due testi con un hash [IT]
- Сравнение двух текстов по хешу [RU]
- Hash ile İki Metni Karşılaştırın [TR]
- 用哈希比较两段文本 [ZH]