【Node.js24.x】Object::pbkdf2Sync()メソッドの使い方
pbkdf2Syncメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
pbkdf2Syncメソッドは、パスワードベースの鍵導出関数(PBKDF2)を同期的に実行するメソッドです。このメソッドは、指定されたパスワード、ソルト(saltと呼ばれるランダムなデータ)、反復回数、および導出する鍵の長さに基づいて、安全な鍵(キー)を生成するために使用されます。主に、ユーザーのパスワードをデータベースに保存する際に直接保存するのではなく、パスワードから生成した安全なハッシュ値を保存したり、パスワードから暗号化のための鍵を導出したりする目的で利用されます。
PBKDF2は、ブルートフォース攻撃や辞書攻撃といったパスワード推測攻撃に対する耐性を高めるために設計されています。パスワードとソルトを組み合わせ、指定された回数だけハッシュ計算を繰り返すことで、計算に意図的に時間をかけさせ、攻撃者が大量のパスワード候補を試すことを困難にします。これにより、万が一データベースが漏洩した場合でも、保存された情報から元のパスワードを攻撃者が容易に解読できないように保護します。
メソッド名のSyncが示す通り、この処理は同期的に実行されます。つまり、鍵の導出が完了するまでNode.jsのメインスレッドはブロックされ、他の処理は一時的に停止します。PBKDF2はセキュリティのために意図的に計算負荷が高いため、特に反復回数を多く設定すると、アプリケーション全体の応答性に影響を与える可能性があります。そのため、長時間の処理が想定される場合や、Webサーバーなどの本番環境でユーザー認証に利用する際は、通常、非同期版のcrypto.pbkdf2メソッドの利用が推奨されます。導出された鍵はBufferオブジェクトとして返されます。
構文(syntax)
1const crypto = require('crypto'); 2 3const derivedKey = crypto.pbkdf2Sync('your_password', crypto.randomBytes(16), 100000, 64, 'sha512');
引数(parameters)
password, salt, iterations, keylen, digest
- password: string: 変換するパスワード
- salt: Buffer | string: 乱数化に使用するソルト
- iterations: number: 鍵導出の反復回数
- keylen: number: 生成される鍵のバイト単位の長さ
- digest: string: 使用するハッシュアルゴリズム(例: 'sha256')
戻り値(return)
Buffer
pbkdf2Sync メソッドは、指定されたパスワード、ソルト、イテレーション数、キー長を使用して、暗号化されたキーを生成し、その結果を Buffer オブジェクトとして返します。