ハッシュ関数とは入力した値(データ)に対して、特定のルールに従って、まったく別の値(データ)が出力されるという暗号方式の関数です。
別の値(データ)として出力される暗号は適当な値(データ)ですが、ランダムではなく必ず同じ値(データ)が出力される特徴があります。
分かりやすく文字で例えると、以下の法則と過程すると
入力値:中国地方の桃といえば? ⇒ 出力値: 岡山だよ
『中国地方の桃といえば』と入力したら、必ず『岡山だよ』と帰ってきます。
上記が言葉ではなくランダムな英数字で表記されます。
また、一方向関数なので、出力値を入力値といれると、違うものが出力がされます。
入力値:『岡山だよ』⇒ 出力値:『きびだんごだね』
この様に逆に戻れないことを不可逆性と呼びます。
常に一方向にしか作用しないので、高度な暗号化が可能となってます。
また、入力値にかかわらず、必ず固定の出力値が返ってきます。
固定の出力値は以下の種類によって異なります。
SHA‐256:256ビットの値で返します
SHA‐384:384ビットの値で返します
SHA‐512:512ビットの値で返します
数字が多いほうが、安全性は高まりますが、CPUの演算が複雑に異なり、実装しづらくなります。
SHA‐256が安全性と実装のしやすさのバランスから、選ばれているわけなのです。
ブロックチェーンではこのハッシュ値の暗号を使用することで、過去の値(データ)改ざんできない仕組みを作ってます。
ビットフライヤーでは、SHA‐256でハッシュ化されあた後、さらにRIPEMD-160でハッシュ化されてます。
この2つのハッシュ関数は、GPUで計算しやすい特徴がありマイニングに向いてますし、2回ハッシュ化することで高度なセキュリティを実現してます。