This article has been translated from English to Japanese.

ハッシュ化とはどのようなものだろうか?

前回のレッスンでは、ハッシュ化の概念と関連用語を紹介した。それでは、その仕組みを学んでみよう!

ハッシュ化は簡単に実行できるが、元に戻すのは非常に難しい数学的演算である。

ハッシュ化プロセスでは、データが0と1の組み合わせであるバイナリコードに変換される。

その後、数字をバラバラにし、秘密の「混合」を適用する。これは「ハッシュ関数」と呼ばれるものによって実行される。

暗号化におけるハッシュ化の仕組みはどのようになっているのか?

ビットコインやその他の暗号通貨で使用される場合、最終的な結果は通常、64桁の数字と文字の組み合わせとなる。

暗号化アルゴリズム(「ハッシュ関数」)によって変換が行われるため、64桁の文字列を元に戻すことはできない。

Hashing Concept

文字列とは 、文字の連続である

文字列は文章のようなものである。文字の組み合わせによって形成される。

String

ハッシュをランダムな文字と数字の組み合わせだと考えてみよう。

ユニークなデータは常に同じハッシュを生成する。

例えば、上記の文字列をハッシュ関数に通すたびに、常に同じハッシュが生成される。

しかし、文字列にほんの少し変更を加えた場合はどうなるだろうか?(黄色でハイライトされている部分)

String Change

文末がピリオドではなく疑問符で終わっている。

文章の変更はごくわずかだったにもかかわらず、ハッシュ値はまったく異なるものになっている。

ハッシュ関数への入力にわずかな変更を加えるだけで、出力がまったく異なるものになるため、改ざんの検出にハッシュを使用できることがお分かりいただけるでしょう。

この点を覚えておくことは非常に重要である。なぜなら、後のレッスンで、この点が以前の取引が改ざんされるのを防ぐためにどのように使用されるかを見ることになるからだ。

ハッシュ関数は一方向のみである。

The hash function is ONE-WAY only.

既存のハッシュを取得し、それを逆にして入力文字列を見つけようとしてもできない。

つまり、ハッシュ値だけが分かっても、元の入力値を知る方法はない。ハッシュ値を「リバースエンジニアリング」したり、ハックしたりすることはできない。

最後に、入力情報の増加に伴って出力(「ハッシュ」)の長さが長くなることはない。ハッシュ関数は、どのような長さの入力データでも固定長の値を返す。

Hash Output is Fixed

76,000語を超えるハリー・ポッターの書籍の全文をハッシュ関数に入力しても、ハッシュ出力の長さは依然として64文字のままとなる。

また、ハリー・ポッターの本のタイトルを1文字でも 間違えてハッシュ関数にかけた場合、上記のハッシュとはまったく異なるハッシュが生成される。

これにより、手作業で書籍全体を検査しなくても、その書籍が改変されたことが即座にわかる。なかなかいいと思わないか?