javascriptでハッシュ(“SHA-256”)の値を取得

この記事は約2分で読めます。
スポンサーリンク

やりたいこと

javaScriptでハッシュ(“SHA-256”)の値を取得します。

スポンサーリンク

実装

以下の関数でハッシュを取得できます。

async function digestMessage(message) {
  const msgUint8 = new TextEncoder().encode(message); // (utf-8 の) Uint8Array にエンコード
  const hashBuffer = await crypto.subtle.digest("SHA-256", msgUint8); // メッセージのハッシュ値を取得
  const hashArray = Array.from(new Uint8Array(hashBuffer)); // バッファーをバイト列に変換
  const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); // バイト列を 16 進文字列に変換
  return hashHex;
}

呼び出し元は以下のようにします。(async関数なのでawaitかThenで返り値を受ける必要があります。)

const str ="ハッシュを求める文字列";
const hash = await digestMessage(str);

crypto.subtle.digestの”SHA-256″以外にも"SHA-1" "SHA-384" "SHA-512"が指定できます。

"SHA-1"は暗号化には使用禁止です。

スポンサーリンク

結果

Javascripでハッシュ値を取得することができました。

'e5f8d3681f38da0737857b4b0136362fdd62f3558274a54cb07c32f63143d203'
スポンサーリンク

参考にさせていただいたサイト

SubtleCrypto: digest() メソッド - Web API | MDN
digest() は SubtleCrypto インターフェイスのメソッドで、指定されたデータのダイジェストを返します。ダイジェストとは、可変長の入力に由来する固定長の短い値です。暗号的ダイジェスト値は耐衝突性を示すため、同じダイジェスト値を持つ 2 つの異なる入力を見つけるのは非常に困難です。

コメント

タイトルとURLをコピーしました