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

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

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

作成日: 更新日:

基本的な使い方

scryptメソッドは、Node.jsにおいて、Scryptと呼ばれる強力なパスワードベースの鍵導出関数(PBKDF)を用いて、パスワードから安全な暗号鍵を導出する非同期処理を実行するメソッドです。主にパスワードをデータベースに保存する際のハッシュ化や、データの暗号化に用いるセッション鍵などを生成する際に利用されます。このメソッドは、与えられたパスワード、ソルト、および計算量に関するパラメータ(N, r, pなど)に基づいて、指定された長さの鍵を生成します。

Scryptアルゴリズムは、特にメモリとCPUの使用量を意図的に増やすことで、ブルートフォース攻撃や辞書攻撃などの攻撃手法に対する耐性を大幅に向上させることが特徴です。これにより、攻撃者が高速なハードウェアを用いて大量のパスワード候補を試すことを困難にし、パスワードの安全性を高めます。

Node.jsの非同期処理として提供されており、鍵導出処理中にアプリケーションのメインスレッドがブロックされることなく、高いパフォーマンスを維持できます。システムエンジニアを目指す方にとって、セキュリティ要件の高いアプリケーションを開発する上で、パスワードや機密データの安全な取り扱いを実装するために非常に重要なメソッドの一つです。

構文(syntax)

1const crypto = require('node:crypto');
2
3const password = Buffer.from('myPassword');
4const salt = crypto.randomBytes(16);
5const keylen = 64;
6
7const derivedKeyPromise = crypto.scrypt(password, salt, keylen);

引数(parameters)

password, salt, keylen, options, callback

  • password: Buffer | string | TypedArray | DataView: ハッシュ化するパスワード
  • salt: Buffer | string | TypedArray | DataView: ランダムなバイト列で、パスワードのハッシュ化に使用されます
  • keylen: number: 生成する鍵の長さ(バイト単位)
  • options: scrypt.ScryptOpts | undefined: scrypt のオプションを指定するオブジェクト
  • callback: (err: Error | null, derivedKey: Buffer) => void: 処理完了後に呼び出されるコールバック関数。エラーまたは生成された鍵が渡されます

戻り値(return)

Promise<Buffer> または undefined

scryptメソッドは、指定されたパスワードを安全にハッシュ化するための処理を行います。成功した場合、ハッシュ化された結果をBufferオブジェクトとして返します。処理中にエラーが発生した場合は、undefinedを返します。

関連コンテンツ

関連プログラミング言語