ハッシュ関数の一つ「SHA-512」とは?

ハッシュ関数の一つ「SHA-512」とは?
2018年6月23日 leakaquare
In ブロックチェーン

SHA-512とは入力されたデータに対して適当な値を返してくれる関数(ハッシュ関数)のひとつであり「SHA-2」と呼ばれるハッシュ関数に分類される中のひとつです。

関数

関数は「何かを入れると何かを計算して何かを返してくれるプログラムの部品」です。
一般的には、入力を受けて処理を行い、その結果として出力があります。
以下、functionが関数です。returnが出力する「ハッシュ値」、pwはパスワードを入れるということです。
パスワードを入れてハッシュ値を取り出すという関数です。

ハッシュ値(sha512)を取得
function getHash (pw) {
const salt = ‘::EVuCM0QwfI48Krpr’
const crypto = require(‘crypto’)
const hashsum = crypto.createHash(‘sha512’)
hashsum.update(pw + salt)
return hashsum.digest(‘hex’)
}

hashsumのところがsha512となっています。これは、指定したアルゴリズム(sha512)でハッシュオブジェクトを作成する時のオブジェクトです。HEXは16進数を表しています。
digestは、SHA-1やSHA-256などのメッセージ・ダイジェスト・アルゴリズムの機能を提供するためのオブジェクトです。

これらは、ハッシュ値を取得するための関数なのです。

なぜハッシュ化が必要なのか

NEMでは、公開鍵と呼ばれる数字の羅列からアドレスを生成するための手順として、以下のステップを踏みます。

1. 256-bit sha3を公開鍵に適用
2. 160bit Ripemdハッシュを適用
3. バージョン番号のバイトを先頭に付加(0x68または0x98)
4. 256-bit sha3をもう一度適用し、先頭4バイトをチェックサムとする
5. ステップ3の結果とステップ4のチェックサムを結合
6. 最終結果をbase32でエンコード

この手順を踏んでようやくアドレスが生成されます。

Comments (0)

Leave a reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*