This article has been translated from English to Japanese.

これまでのレッスンでは、ハッシュ化とは何かハッシュ化の仕組みについて学んできた。

しかし、これらの専門プログラムが実際に何を行っているのかを本当に理解するためには、実際の例を実際に動かしてみることが役に立つ。

See how hashing works!

実際のハッシュ関数を使用して、ハッシュ処理がどのように機能するのかを見てみよう。

ビットコインではSHA-256がハッシュ関数として選択されているため、これを例として使用しよう。

これが最初の入力例である。

BabyPips.comは氷のようにクールだ。

この文章を SHA-256 ハッシュ関数にかけると、以下のようなハッシュ値が生成される。これは「ダイジェスト」または単に「ハッシュ」とも呼ばれる。

A58E12FAC905B8F84EA2F64F888191A4B66A67CC45F8E7B7B0F94C37A134CB57

ダイジェストが文字と数字の組み合わせであることが分かる。そして、正確に64文字の長さである。

それ以外に、このダイジェストから読み取れることはあまりない。入力に関するパターンや手がかりは一切ない。ただの訳の分からない文字の羅列にしか見えない。

出力はランダムに見えるかもしれない。しかし、出力だけを見て入力が推測できるはずがない。

SHA-256ハッシュ関数に再度入力を通すと、まったく同じ出力(「ハッシュ」)が再び得られる。

同じ入力は常に同じ出力を生成する。

それでは、最初の例の入力に微妙な変更を加えて、何が起こるか見てみよう。

BabyPips.comはシラミのようにクールだ。

「lice」という単語の頭文字に「l」という文字が追加され、「ice」という単語が「lice」という単語に綴られていることに注目してほしい。

新しいダイジェストは次の通り:

B8784EAEB1FC50719B2041FB1AEE30FF91516529CCB65B4B446CC4D5F6B4EB95

それでは、2つを比較してみよう。

入力 Digest
BabyPips.comは氷のようにクールだ。 A58E12FAC905B8F84EA2F64F888191A4B66A67CC45F8E7B7B0F94C37A134CB57
BabyPips.comは最高だ。 B8784EAEB1FC50719B2041FB1AEE30FF91516529CCB65B4B446CC4D5F6B4EB95

最初のダイジェストとはまったく異なる結果であることがお分かりいただけるだろう。

入力は実質的に同一であったにもかかわらず、1文字を変えるだけで、まったく異なる出力が生成された。

Lice is so cool

シラミはかなり嫌なものなので、もう一度入力に変更を加えてみよう。

BabyPips.comはご飯のようにクールだ。

では、何が起こるか見てみよう:

FCA7032BE8CF7F3C0DD75B8DEB77412E452EA5E2275BAA4125123CD639ED2C9A

まったく異なる入力が再び!

それでは、3つすべてを比較してみよう。

入力 Digest
BabyPips.comは氷のようにクールだ。 A58E12FAC905B8F84EA2F64F888191A4B66A67CC45F8E7B7B0F94C37A134CB57
BabyPips.comは最高だ。 B8784EAEB1FC50719B2041FB1AEE30FF91516529CCB65B4B446CC4D5F6B4EB95
BabyPips.comは最高だ。 FCA7032BE8CF7F3C0DD75B8DEB77412E452EA5E2275BAA4125123CD639ED2C9A

ハッシュ関数には文字通りどのような入力も投入できることを強調しておく価値がある。

入力の長さに関係なく、 出力は常に同じ固定長であり、常に完全にランダムなように見える

このツールを実際に試して確かめてみよう:

入力する文字列を少し変更してみて、ハッシュがどのように大きく変わるか確認してみてください。

素晴らしいと思いませんか? 🤓

おめでとう!あなただけのハッシュタグを作ったのだ!👏