JavaScriptでは様々な方法でSHA-256ハッシュを生成することができます。
この記事では『JavaScriptでSHA-256ハッシュを生成する方法』について、
- Web Crypto APIを使用した方法
- Node.jsの
crypto
モジュールを使用した方法 crypto-js
ライブラリを使用した方法
をプログラム例を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
Web Crypto APIを使用して、SHA-256ハッシュを生成する
JavaScriptにおいてSHA-256ハッシュを生成するための方法の一つは、Web Crypto APIを使用することです。
以下にWeb Crypto APIを使用して、SHA-256ハッシュを生成するプログラム例を示しています。
// sha256関数は非同期関数(asyncを使用)で、引数としてメッセージ(ハッシュを計算する文字列)を受け取る
async function sha256(message) {
// 文字列をUint8Arrayにエンコードする
const encoder = new TextEncoder();
const msgUint8 = encoder.encode(message);
// エンコードされたメッセージのSHA-256ハッシュを計算する
// ここでWeb Crypto APIを使用している
const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);
// SHA-256ハッシュの計算結果(hashBuffer)はArrayBufferなので、
// それをUint8Arrayに変換し、16進数の文字列に変換する
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray
.map((b) => b.toString(16).padStart(2, '0'))
.join('');
// SHA-256ハッシュの16進数の文字列を返す
return hashHex;
}
// 使用例('Hello'をSHA-256でハッシュ値に変換する)
sha256('Hello').then((hash) => {
console.log(hash); // SHA-256ハッシュをコンソールに表示する
});
上記のプログラム例では、sha256
関数呼び出して「Hello」のSHA-256ハッシュを計算し、結果をコンソールに表示しています。
補足
Web Crypto APIはすべてのブラウザでサポートされているわけではないので、使用する前に互換性を確認してください。
Node.jsのcryptoモジュールを使用して、SHA-256ハッシュを生成する
Node.jsのcrypto
モジュールに存在するcreateHash
メソッドを使用して、SHA-256ハッシュを生成するプログラム例を以下に示します。
// cryptoモジュールをインポートする
const crypto = require('crypto');
// sha256関数は同期関数で、引数としてメッセージ(ハッシュを計算する文字列)を受け取る
function sha256(message) {
// SHA-256ハッシュ計算のためのハッシュオブジェクトを初期化する
const hash = crypto.createHash('sha256');
// ハッシュに入力データを供給する
hash.update(message);
// 16進数の文字列としてハッシュを完成させる
const hashHex = hash.digest('hex');
// SHA-256ハッシュの16進数の文字列を返す
return hashHex;
}
// 使用例('Hello'をSHA-256でハッシュ値に変換する)
const result = sha256('Hello');
console.log(result); // SHA-256ハッシュをコンソールに表示する
上記のプログラムはNode.js環境においてSHA-256ハッシュを生成する方法としては非常に一般的です。
crypto-jsライブラリを使用して、SHA-256ハッシュを生成する
次に、JavaScriptのcrypto-js
ライブラリを使用して、SHA-256ハッシュを生成する方法を説明します。crypto-js
を使用すると非常にシンプルにSHA-256ハッシュを生成することができます。
まず、crypto-js
をインストールする必要があります。npmを使用している場合、次のコマンドでインストールできます。
npm install crypto-js
その後、JavaScriptの暗号化ライブラリ(crypto-js
)を使用して、SHA-256ハッシュを生成するプログラムを記述します。
// crypto-jsライブラリをインポートする
const CryptoJS = require('crypto-js');
// ハッシュを計算するメッセージを定義する
const message = 'Hello';
// CryptoJS.SHA256メソッドを使用して、メッセージのSHA-256ハッシュを計算する
const hash = CryptoJS.SHA256(message);
// ハッシュを16進数の文字列に変換する
const result = hash.toString(CryptoJS.enc.Hex);
// SHA-256ハッシュをコンソールに表示する
console.log(result);
補足
hash.toString(CryptoJS.enc.Hex)
とhash.toString()
は同じ結果を返します。これは、デフォルトのエンコーディングが16進数であるからです。
CryptoJS.enc.Hex
はエンコーディングを16進数にするオプションです。CryptoJS.enc.Hex
を明示的に使用する必要はありませんが、このようなエンコーディングのオプションを提供することで、他のエンコーディング形式を選択することが可能となります。例えば、CryptoJS.enc.Base64
をtoString
メソッドに渡すことで、Base64形式での出力を得ることができます。
本記事のまとめ
この記事では『JavaScriptでSHA-256ハッシュを生成する方法』について、以下の内容を説明しました。
- Web Crypto APIを使用した方法
- Node.jsの
crypto
モジュールを使用した方法 crypto-js
ライブラリを使用した方法
お読み頂きありがとうございました。