Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Node.js24.x】Object::scryptSync()メソッドの使い方

scryptSyncメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

scryptSyncメソッドは、Node.jsのcryptoモジュール内で提供され、パスワードから安全な暗号鍵を導出するためのメソッドです。これは「scrypt」と呼ばれるパスワードベースの鍵導出関数(PBKDF)の同期バージョンにあたります。

このメソッドの主な目的は、パスワードのハッシュ化や、パスワードを基にした暗号化キーの生成において、セキュリティを強化することです。scryptは、従来のハッシュ関数とは異なり、意図的に多くの計算リソースとメモリを消費するように設計されています。これにより、総当たり攻撃、辞書攻撃、レインボーテーブル攻撃といったパスワードに対する攻撃の効率を著しく低下させ、攻撃者が大量のパスワード候補を試すことを困難にします。

scryptSyncは、入力として元のパスワード、ランダムな文字列であるソルト、そして計算コストやメモリ使用量を調整するためのオプションパラメータを受け取ります。そして、これらを用いて生成された安全な暗号鍵をBuffer形式で返します。

このメソッドは「同期」という名前が示す通り、処理が完了するまでプログラムの実行を一時的にブロックします。そのため、Webサーバーのようにリアルタイム性を求められるアプリケーションで頻繁に呼び出すと、全体のパフォーマンスに影響を与える可能性があります。しかし、アプリケーションの起動時に設定ファイルを処理する場合や、特定のユーティリティスクリプト内での利用など、ブロックが許容される状況で非常に有効なセキュリティ手段となります。パスワードを安全に扱うための重要なツールの一つとして活用されます。

構文(syntax)

1const crypto = require('node:crypto');
2
3const password = 'my_secure_password';
4const salt = crypto.randomBytes(16);
5const keylen = 32; // 導出するキーの長さ(バイト)
6const options = { cost: 16384, blockSize: 8, parallelization: 1 }; // scryptの計算コストパラメータ
7
8const derivedKey = crypto.scryptSync(password, salt, keylen, options);

引数(parameters)

password, salt, keylen, options

  • password: string | Buffer | TypedArray | DataView: ハッシュ化するパスワード
  • salt: string | Buffer | TypedArray | DataView: ソルト(パスワードにランダム性を追加するためのデータ)
  • keylen: number: 生成する鍵の長さ(バイト単位)
  • options: object: オプション設定オブジェクト
    • cost: number: CPUコスト係数(計算コストを決定)
    • blockSize: number: ブロックサイズ
    • parallelization: number: 並列化係数
    • N: number: scryptのNパラメータ (cost * 128)
    • r: number: scryptのrパラメータ (blockSize)
    • p: number: scryptのpパラメータ (parallelization)
    • maxmem: number: 使用可能な最大メモリ(バイト単位)

戻り値(return)

<Buffer>

scryptSyncメソッドは、指定されたアルゴリズムで入力データをハッシュ化した結果をBufferオブジェクトとして返します。

関連コンテンツ

関連プログラミング言語