仮想通貨に手を出すならハッシュ関数くらいは触れた方が良いだろうと思い、Excelを使って肌で感じてみることにしました。
自分で手を動かすと理解が深まりますのでおすすめです。
特にExcelはわかりやすく、最初のとっかかりとしては最適なツールです。
- Excel VBAで簡単にハッシュ関数を出力するプログラムを紹介!
- 色々な言葉や文字をハッシュ化してみた
Excelでハッシュ関数を使う:ハッシュ関数でハッシュ化
ビットコインのブロックチェーン技術には、ハッシュ関数が使われています。
ビットコインで使用されているハッシュ関数は「SHA-256」と「RIPEMD-160」になり、今回は「SHA-256」を使ってハッシュ化に触れてみました。
ハッシュ関数の使われ方については、こちらの記事を参考にしてみてください。
Excelでハッシュ関数を使う:Excel VBAで簡単なハッシュ関数を出力するプログラムを組んでみた
ハッシュ関数は、sum関数やsubtotal関数のように普通に使えるExcel内の関数にはありません。
ハッシュ関数を使用するためには、VBAで簡単なプログラムを組む必要があります。
今回、Excelでハッシュ関数を使うために、以下のサイトを参考にさせていただきました。
このサイトを参考にし、Excel VBAで簡単なコードを組んで、セルにハッシュ値が表示されるようにしてみました。
ボタンを押すと入力した値のハッシュ値が表示されるプログラムです。
ポチっ!

出た!
よく見かけるハッシュ値が出てきました。
これだけでも、少しわかった気になります。
16進数の数値にしびれますね。
(もしかして、キモい?)
実際のコードは、次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub ボタン1_Click() Dim chara1 As String Set objSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed") Set objUTF8 = CreateObject("System.Text.UTF8Encoding") chara1 = Range("C8").Value ' 文字列を UTF8 にエンコードし、バイト配列に変換 bytes = objUTF8.GetBytes_4(chara1) ' ハッシュ値を計算(バイナリ) hash = objSHA256.ComputeHash_2((bytes)) ' バイナリを16進数文字列に変換 For i = 1 To LenB(hash) a = a & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2) Next strText = LCase(a) Range("C11").Value = strText End Sub |
本当に簡単なプログラムです。
これだけでもブロックチェーン技術が少しわかった気になりますので、時間があるときに自分の手を動かしてみてください。
上記のコードは、コピペするだけで使えます
Excelでハッシュ関数を使う:ハッシュ関数で様々な変数をハッシュ化してみる
せっかくなので色々なものをハッシュ化してみました。
直に触れると雰囲気がわかります。
「abcde」をハッシュ化
まずは、”abcde”です。
このように、64文字のハッシュ値が出力されます。
「長い文章」をハッシュ化
長い文章でも64文字のハッシュ値が出てきます。
“abcde”とは全然違う値です。
「水曜どうでしょう」をハッシュ化
水曜どうでしょうのセリフも64文字に!

いろいろハッシュ化してみた
ここでのポイントは、インプットがちょっと違うだけでまったく違う値が返されるということです。
ハッシュ関数の結果から、元の文字列を予測することは不可能とされています。
そのため、一方向の関数として使うことができるわけです。

この結果からわかるように、1文字異なるだけで、まったく違ったハッシュ値が返されます。
ハッシュ関数は暗号化のために使われ、この暗号化の技術が、ビットコインシステムのセキュリティの1つの鍵となります。
ハッシュ値から元の変数を予測することは不可能
さいごに:Excelでハッシュ関数を使ってみた
ブロックチェーン技術は、今までにあった技術の組み合わせでできています。
ハッシュ関数自体も1行のコードで書くことができます。
1つ1つの技術はそこまで難しくありません。
今回のようにハッシュ関数などに触れることで、ブロックチェーン技術のすごさが肌で感じられると思います。
ハッシュ関数はExcel VBAで簡単に使うことができますので、この記事を参考にして、一度自分の手で試してみてください。
実際に手を動かすことで、ハッシュ関数を少し理解することができます。