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

Node.jsのcrypto.randomFill()メソッドの使い方とサンプルコード


Node.js の crypto.randomFill() メソッドと crypto.randomBytes() メソッドは、ほぼ同じ動作をするメソッドです。両者の唯一の違いは、randomFill() では第一引数にランダムなデータで満たされるバッファを直接指定する点にあります。また、コールバック関数が設定されている場合に限り、エラー発生時にそのコールバックが呼び出されます。

構文

crypto.randomFill(buffer, [offset], [size], [callback])

パラメータ

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

  • buffer – ランダムデータが書き込まれる対象のフィールドです。指定できる型は string、TypedArray、Buffer、ArrayBuffer、DataView などです。なお、バッファのサイズは 2**31-1 を超えることはできません。

  • offset – randomFill がデータの書き込みを開始する位置(オフセット)です。デフォルト値は 0 です。

  • size – オフセット以降に書き込むバッファのサイズ、つまり (buffer.length - offset) です。この値も 2**31-1 を超えることはできません。

  • callback – エラーがスローされた際に呼び出される関数です。

使用例

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

node randomFill.js

randomFill.js

// crypto.randomFill() メソッドの動作を示す Node.js プログラム

// crypto モジュールを読み込む
const crypto = require('crypto');
const fs = require("fs");

// バッファのバイト数を初期化
const buf = Buffer.alloc(6);

// バッファとコールバックを指定して randomFill メソッドを呼び出す
crypto.randomFill(buf, (err, buf) => {
    if (err) throw err;
    // 書き込み後のバッファデータを出力する
    console.log(buf.toString('ascii'));
});

// 定義済みのパラメータをすべて指定して randomFill を呼び出す
crypto.randomFill(buf, 3, 2, (err, buf) => {
    if (err) throw err;
    // バッファ内の新しいランダムデータを出力する
    console.log(buf.toString('base64'));
});

// 以下の関数でも同じ結果が出力されることが確認できる
crypto.randomFill(buf, 3, 3, (err, buf) => {
    if (err) throw err;
    console.log(buf.toString('base64'));
});

出力

C:\home\node>> node randomFill.js
f!]"+–
ZqHdoit8
ZqHdoit8

使用例:DataView を使った場合

続いて、もう一つの例を見てみましょう。こちらは DataView を使ってバッファを初期化しています。

// crypto.randomFill() メソッドの動作を示す Node.js プログラム

// crypto モジュールを読み込む
const crypto = require('crypto');
const fs = require("fs");

// DataView を使ってバッファのバイト数を初期化する
const data = new DataView(new ArrayBuffer(16));

// バッファとコールバックを指定して randomFill メソッドを呼び出す
crypto.randomFill(data, (err, buf) => {
    if (err) throw err;
    // エンコーディングを指定して randomFill のデータを出力する
    console.log(Buffer.from(buf.buffer,
        buf.byteOffset, buf.byteLength).toString('ascii'));
});

出力

C:\home\node>> node randomFill.js
>h(Be#D8h0

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