技術ブログ

プログラミング、IT関連の記事中心

JavaScriptで文字列をハッシュ化する方法

目次

ハッシュ化とは

ハッシュ化とは、データを不規則な文字列に変換する事です。
変換されたデータはハッシュ値と呼ばれ、データの変換にはハッシュ関数と呼ばれるアルゴリズムが使われています。

同一のデータから変換されるハッシュ値は常に同一の結果になります。
また、変換後は複合化できない性質(不可逆性)があることが特徴です。

ハッシュ化は、一度入力すると復号できないほうが都合がいいもの、パスワードや、データ・ファイルの改ざんがされていないかチェックする際(チェックサム)に使用します。

SHA-256のハッシュ化

一般的なハッシュ化である「SHA-256」のハッシュ化の方法は以下です。
非同期で処理されるため、thenで取得結果を受け取る必要があります。

const sha256 = async (text) => {
    const uint8  = new TextEncoder().encode(text)
    const digest = await crypto.subtle.digest('SHA-256', uint8)
    return Array.from(new Uint8Array(digest)).map(v => v.toString(16).padStart(2,'0')).join('')
}

sha256('テスト').then(hash => console.log(hash));

SHA-512のハッシュ化

「SHA-256」のハッシュ化と方法はほとんど同じです。

const sha512 = async (text) => {
    const uint8  = new TextEncoder().encode(text)
    const digest = await crypto.subtle.digest('SHA-512', uint8)
    return Array.from(new Uint8Array(digest)).map(v => v.toString(16).padStart(2,'0')).join('')
}

sha512('テスト').then(hash => console.log(hash));