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

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

crypto.createHash() メソッドは、指定されたアルゴリズムに基づいてハッシュオブジェクトを生成し、そのオブジェクトを返します。このハッシュオブジェクトを利用することで、ハッシュダイジェスト(ハッシュ値)を生成できます。また、省略可能な options を指定すれば、ストリームの動作を細かく制御することも可能です。


なお、XOF や「shake256」のような一部のハッシュ関数では、outputLength オプションを使用して、希望する出力長(バイト単位)を明示的に指定する必要があります。

構文

crypto.createHash(algorithm, [options])

パラメータ

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

  • algorithm – ハッシュダイジェストの生成に使用されるアルゴリズムです。入力型は文字列(string)です。

  • options – ストリームの動作を制御するための省略可能なパラメータです。

使用例1:文字列からハッシュ値を生成する

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

node createHash.js

createHash.js

// crypto.createHash() のデモ例

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

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

// secretを使ってcreateHashメソッドを初期化
const hashValue = crypto.createHash('sha256', secret)

    // ハッシュ化対象のデータ
    .update('Welcome to TutorialsPoint !')

    // 出力エンコード形式を定義
    .digest('hex');

// 結果を出力
console.log("Hash Obtained is: ", hashValue);

出力結果

C:\home\node>> node createHash.js
Hash Obtained is:
5f55ecb1ca233d41dffb6fd9e307d37b9eb4dad472a9e7767e8727132b784461

使用例2:ファイルのストリームからハッシュ値を計算する

続いて、もう一つの実践的な例を見てみましょう。以下のコードでは、ファイルを読み込みながらストリーミング形式でハッシュ値を計算しています。大きなファイルでもメモリを圧迫せずに処理できるのがポイントです。

// crypto.createHash() のデモ例

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

// コマンドライン引数から現在のファイルパスを取得
const filename = process.argv[1];

// secretを使ってハッシュオブジェクトを生成
const hash = crypto.createHash('sha256', "TutorialsPoint");

// ファイルを読み込み用のストリームとして開く
const input = fs.createReadStream(filename);
input.on('readable', () => {
    // ハッシュストリームから要素を1つずつ読み込む
    const val = input.read();
    if (val)
        hash.update(val);
    else {
        // 読み込み完了後、16進数のハッシュ値を出力
        console.log(`${hash.digest('hex')} ${filename}`);
    }
});

出力結果

C:\home\node>> node createHash.js
d1bd739234aa1ede5acfaccee657296ead1879644764f45be17466a9192c3967
/home/node/test/createHash.js

まとめ

このように、crypto.createHash() メソッドを使えば、単純な文字列はもちろん、ファイルなどのストリームデータに対しても手軽にハッシュ値を計算できます。データの改ざんチェックやパスワードのハッシュ化など、セキュリティ関連の処理において非常に有用なメソッドなので、ぜひ使い方をマスターしておきましょう。

  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() 引数(パラメータ) このメソッドは、サポートされているハッシュアルゴ