【Node.js24.x】Object::randomFill()メソッドの使い方
randomFillメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
randomFillメソッドは、Node.jsにおいて、指定されたバッファまたはTypedArrayインスタンスを、暗号学的に安全なランダムなデータで満たすためのメソッドです。このメソッドの主な目的は、ハッシュソルト、秘密鍵、セッションIDなど、予測不可能性が極めて重要となるセキュリティ関連のデータを生成することにあります。システムやアプリケーションの堅牢性を確保するために、非常に強力な乱数生成が求められる場面で活用されます。
randomFillメソッドは非同期操作として設計されており、大量のデータを処理する際にもNode.jsのイベントループをブロックすることなく、バックグラウンドで処理を実行します。これにより、アプリケーション全体の応答性とパフォーマンスを維持できます。利用時には、対象となるバッファインスタンスと、オプションとして乱数で満たす範囲を指定するためのオフセットおよびサイズ、そして処理が完了した際に呼び出されるコールバック関数を引数として渡します。また、Promiseベースでの利用もサポートされており、より現代的な非同期処理の記述が可能です。
生成される乱数は、オペレーティングシステムが提供する暗号学的に強力な擬似乱数ジェネレータ(CSPRNG)を利用しており、その予測困難性は非常に高いため、セキュリティ要件の厳しい環境でも信頼して使用できます。この機能は、安全なデータ生成を必要とするあらゆるNode.jsアプリケーションにおいて、不可欠なセキュリティツールの一つとして位置づけられています。
構文(syntax)
1import { randomFill } from 'node:crypto'; 2 3// 16バイトのバッファを作成します 4const buffer = Buffer.alloc(16); 5 6// バッファを暗号論的に安全な乱数で埋めます(Promiseを返します) 7randomFill(buffer) 8 .then(() => { 9 // 処理が成功した場合、バッファは乱数で埋められています 10 console.log('Randomly filled buffer (hex):', buffer.toString('hex')); 11 }) 12 .catch((err) => { 13 // 処理が失敗した場合 14 console.error('Error filling buffer:', err); 15 });
引数(parameters)
buf, offset = 0, size, callback
- buf: Buffer: ランダムなバイトで埋められるバッファオブジェクト
- offset: number = 0: ランダムなバイトの書き込みを開始するバッファ内のオフセット(省略可能、デフォルトは0)
- size: number: ランダムなバイトの数
- callback: Function: 操作が完了したときに呼び出されるコールバック関数。エラーが発生した場合はエラーオブジェクトが渡されます。
戻り値(return)
Promise<Buffer | TypedArray>
指定されたバッファまたはTypedArrayオブジェクトがランダムなバイトで埋め込まれた状態で解決されるPromiseを返します。