SHA-256は?Secure Hash Algorithm 256-bit の略で、アメリカ国立標準技術研究所(NIST)が定めた標準のハッシュ関数のSHA-2に分類される内の一つです。
名前の数字に明記してある通り、さまざまな長さのデータでも256ビット長のハッシュ値を算出することができます。
そして、様々なハッシュ関数の中でも実装のしやすさや、計算速度、暗号学的な安全性のバランスが良いため、最も普及しているハッシュ関数です。
SHA‐256の特性
- 任意のデータから固定長のデータを出力し返す
- データーを一方にしか変換できない為、ハッシュ化されたデータは基本的に元のデータに戻すことは不可能
入力データ(引数)を以下とるすと
abc
↓
SHA-256での戻り値は以下となります。
ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad
SHAのアルゴリズムは初期のハッシュ値が決まっており、この初期ハッシュに情報を入力することでハッシュを変化させます。
SHA-256の場合は、入力したデータは64バイトごとに分割し『メッセーズブロック』として出力されます。? もし、入力データの量が64バイトを超えた場合、複数のメッセージブロックが形成されます。
初期ハッシュをメッセージブロックを使って変化させ、新しいハッシュ値を出力し、その出力したハッシュ値を次のメッセージブロックで変化させてることを繰り返します。 そして最後のメッセージブロックで出力されたハッシュ値が最終結果となります。
ビットコインが使用しているハッシュは SHA-256 と RIPEMD-160 の2つのハッシュ関数が使用されてます。
これらのハッシュ関数の計算は『GPU』や『ASIC』で計算するのに向いていると言われてます。
SHA-256はビットコインのマイニング当初はCPUで計算を行っていたが、徐々に難易度があがり、GPUを使って並列に計算するGPUマイニングに移行し、FPGAでこの計算を行うFPGAマイニング移行してます。
現在では消費電力が少なくて高速演算ができる専用のASICマシンによるASICマイニングが主流となっています。