JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

Node.jsのcrypto.createHmac()メソッドの使い方を徹底解説

crypto.createHmac()メソッドは、指定されたアルゴリズムと鍵(キー)に基づいてHMACオブジェクトを生成し、そのオブジェクトを返します。HMAC(Hash-based Message Authentication Code)は、メッセージの完全性と認証を検証するために広く使われる暗号技術であり、APIリクエストの署名やデータの改ざん検出など、さまざまな場面で活用されています。任意のoptionsパラメータを使用することで、ストリームの動作を制御することも可能です。ここで定義する鍵は、暗号学的なHMACハッシュを生成するためのHMAC鍵として使用されます。

構文

crypto.createHmac(algorithm, key, [options])

パラメータ

各パラメータの詳細は以下の通りです。

  • algorithm – HMACオブジェクトの生成に使用されるアルゴリズムです。sha256sha512などが指定できます。入力型は文字列です。

  • key – 暗号学的HMACハッシュの生成に使用されるHMAC鍵です。秘密鍵として厳重に管理する必要があります。

  • options – ストリームの動作を制御するための任意パラメータです。

  • encoding – 使用する文字エンコーディングを指定します。

使用例1:基本的なHMACハッシュの生成

まず、createHmac.jsという名前のファイルを作成し、以下のコードスニペットをコピーしてください。ファイル作成後、次のコマンドでコードを実行できます。

node createHmac.js

createHmac.js

// crypto.createHmac() デモ例

// cryptoモジュールをインポート
const crypto = require('crypto');

// 秘密鍵を定義
const secret = 'TutorialsPoint';

// 秘密鍵を使ってcreateHmacメソッドを初期化
const hmacValue = crypto.createHmac('sha256', secret)

    // エンコード対象のデータ
    .update('Welcome to TutorialsPoint !')

    // エンコーディング形式を定義
    .digest('hex');

// 結果を出力
console.log("取得したHMAC値: ", hmacValue);

出力結果

C:\home\node>> node createHmac.js
取得したHMAC値:
dd897f858bad70329fad82087110059f5cb920af2736d96277801f70bd57618e

この例では、sha256アルゴリズムと秘密鍵「TutorialsPoint」を使用してHMACオブジェクトを作成し、update()メソッドでデータを渡した後、digest('hex')によって16進数形式のハッシュ値を取得しています。

使用例2:ファイルストリームに対するHMAC計算

続いて、もう一つの実践的な例を見てみましょう。この例では、ファイルの内容をストリームとして読み込みながら、逐次的にHMACハッシュを計算します。大きなファイルを扱う場合でもメモリ効率よく処理できるのが特徴です。

// crypto.createHmac() デモ例

// cryptoモジュールとfsモジュールをインポート
const crypto = require('crypto');
const fs = require('fs');

// 現在のファイルパスを取得
const filename = process.argv[1];

// 秘密鍵を使って現在のパスに対するHMACを作成
const hmac = crypto.createHmac('sha256', "TutorialsPoint");

const input = fs.createReadStream(filename);
input.on('readable', () => {
    // HMACストリームから生成された要素を1つ読み込む
    const val = input.read();
    if (val)
        hmac.update(val);
    else {
        console.log(`${hmac.digest('hex')} ${filename}`);
    }
});

出力結果

C:\home\node>> node createHmac.js
0489ce5e4bd940c06253764e03927414f79269fe4f91b1c75184dc074fa86e22
/home/node/test/createHmac.js

このようにcrypto.createHmac()メソッドを使えば、単純な文字列はもちろん、ファイルストリームのような大量のデータに対しても効率的にHMACハッシュを生成できます。セキュリティ要件の高いアプリケーションにおいて、データ認証や改ざん検知を実装する際の強力な手段となるでしょう。

  1. Node.jsのcrypto.privateDecrypt()メソッドの使い方を徹底解説

    crypto.privateDecrypt()メソッドは、crypto.publicEncrypt()メソッドを使って対応する公開鍵で事前に暗号化されたデータを、パラメータとして渡された秘密鍵を用いて復号するために使用されます。RSA暗号方式などの公開鍵暗号システムにおいて、安全なデータ復号を実現するための重要なAPIです。 構文 crypto.privateDecrypt(privateKey, buffer) パラメータ このメソッドが受け取る各パラメータの詳細は以下のとおりです。 privateKey(秘密鍵) – 復号に使用する秘密鍵を指定します。Object、String、Bu

  2. Node.jsのcrypto.getHashes()メソッドとは?使い方とサポートされるハッシュアルゴリズム一覧の取得方法

    crypto.getHashes()メソッドは、Node.jsでサポートされているすべてのハッシュアルゴリズムの名前を配列形式で返します。cryptoモジュールには非常に多くのハッシュアルゴリズムが用意されており、その中でも歴史的によく使われてきたのが「MD5(Message-Digest Algorithm 5)」です。ただし、MD5には衝突耐性の脆弱性があるため、現在ではセキュリティ用途にはSHA-256やSHA3系など、より強力なアルゴリズムを使うことが推奨されています。 構文 crypto.getHashes() 引数(パラメータ) このメソッドは、サポートされているハッシュアルゴ