暗号化ハッシュ関数
暗号化ハッシュ関数とは何ですか?
暗号化ハッシュ関数は、可変長の任意のデータ文字列をハッシュと呼ばれる固定長および形式のいずれかに変換するために使用できるアルゴリズム、つまり特定のアクションの反復可能なシーケンスです。
ハッシュ関数の最も単純な例の 1 つは、出力が 1 桁になるまで数値の各桁を加算することです。たとえば、入力が 49 の場合、4 と 9 を加算すると 13 が得られ、その数字の 1 と 3 が再度合計されて、出力は 4 になります。入力数値の長さに関係なく、出力は常に 1 になります。桁。
ただし、これは良いアルゴリズムではありません。機能を適切に実行するには、ハッシュ関数がいくつかの特性を備えている必要があるからです。
- 任意の入力に対する出力を計算するのは簡単なはずですが、プロセスを逆にして既知の出力の入力を計算することはほぼ不可能です。
- 決定論 — 特定の入力をアルゴリズムに入力すると、常に同じ出力が生成される必要があります。
- 衝突耐性 — 2 つの異なる入力が同じ出力を生成する可能性は非常に低いはずです。
- 雪崩効果 — 入力内のデータを 1 ビットでも変更すると、出力が大きく異なるはずです。
ハッシュ関数は、たとえば、長期保存後のコンピュータ ファイルの整合性を検証するためのチェックサムとして、またはランダム化関数として、多くのユースケースに適用されます。
これらは、SHA-256 ハッシュ関数を使用するビットコイン (BTC) などのプルーフ・オブ・ワーク暗号通貨のマイニングにおける重要なコンポーネントでもあります。新しいブロックをブロックチェーンに追加し、新たに採掘されたビットコインの報酬を受け取るために、マイナーはまず、ターゲットと呼ばれる特定のしきい値を下回るハッシュ値を生成する必要があります。
ハッシュは擬似ランダムであり、ハッシュ関数を実際に実行する前に入力の出力を予測することは不可能であるという事実により、マイナーは何もないところから新しいビットコインを印刷することができず、実行した作業を証明する必要があります。