2019年2月16日ビットコインを含む仮想通貨の仕組みを理解するために知っておきたいハッシュ関数について解説していきます。この記事を読むと次のことを理解できるようになると思います。暗号学的ハッシュ関数についてハッシュ関数SHA-256ハッシュ関数RIPEMD-160ハッシュ関数のSHA-256とRIPEMD-160とはビットコインで利用されているものです。このハッシュ関数を用いたアドレス生成方法は以下の記事を参考にしてください。まとめハッシュ関数とはハッシュ関数とは、暗号方式のひとつで、ある入力(インプット)に対して、全く別の値を出力(アウトプット)として返すのが大きな特徴です。入力には数字でも文字列でも関係なく使用できます。ハッシュ化されたデータの事をハッシュ値と呼び、ウェブサービスでは基本的にパスワードがハッシュ化されています。同じ値に対して、同じ値が出力されます。入力が一文字でも異なれば出力が大きく異なります。入力はどんな長さになろうとも出力は固定長で返されます。ハッシュ関数SHA-256では256ビットのハッシュ値が返されます。入力によって計算時間があまり変わらない入力の長さによって出力が返されるまでの時間はあまり変わりません。暗号学的ハッシュ関数とは暗号学的ハッシュ関数は、ハッシュ関数のなかで、暗号など情報セキュリティの用途に適する暗号数理的性質を持つもののことを言います。ここでは暗号学的ハッシュ関数の安全基準3つを確認していきます。向性(原像計算困難性)安全基準1は出力から入力を特定しがたいことです。(弱衝突耐性)安全基準2は同じ出力になる入力を特定しがたいことです。入力aからハッシュ値H(a)が与えられているとき、この出力H(a)と衝突するような別の入力を見つけることが困難でなければなりません。衝突困難性(強衝突耐性)安全基準3は衝突が困難であることです。安全基準2と近いですが、H(a)=H(b)となるような2つの異なる入力aとbを探し出すことが困難でなければなりません。SHA-256を通すことで、入力に対して256ビット(32バイト)のハッシュ値を得られます。SHA-256はビットコインアドレスを生成する際に使われます。Digest」の略です。長さが160ビット(20バイト)のハッシュ値です。ビットコインでは公開鍵をSHA-256でハッシュ化し、再度RIPEMD-160でハッシュ化しています。出力値(ハッシュ値)「7d0388b7dd9290188a38142527f07577f68196ed」まとめ今回はハッシュ関数の概要を解説しました。まとめると、ハッシュ関数は次の特徴があります。出力がぶつからない衝突耐性があることこのハッシュ関数を繰り返してビットコインのアドレスが生成されているわけですね。ビットコインアドレスのもとになっている公開鍵や秘密鍵などについては以下の記事を参考にしてください。普段はブロックチェーンプログラム勉強しながらたまにブログ書いてます。技術からみた仮想通貨とブロックチェーン。