Skip to main content
scrypt - crypto - Node documentation
function scrypt

Usage in Deno

import { scrypt } from "node:crypto";
scrypt(
password: BinaryLike,
salt: BinaryLike,
keylen: number,
callback: (
err: Error | null,
derivedKey: Buffer,
) => void
,
): void

Provides an asynchronous scrypt implementation. Scrypt is a password-based key derivation function that is designed to be expensive computationally and memory-wise in order to make brute-force attacks unrewarding.

The salt should be as unique as possible. It is recommended that a salt is random and at least 16 bytes long. See NIST SP 800-132 for details.

When passing strings for password or salt, please consider caveats when using strings as inputs to cryptographic APIs.

The callback function is called with two arguments: err and derivedKey. err is an exception object when key derivation fails, otherwise err is null. derivedKey is passed to the callback as a Buffer.

An exception is thrown when any of the input arguments specify invalid values or types.

const {
  scrypt,
} = await import('node:crypto');

// Using the factory defaults.
scrypt('password', 'salt', 64, (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // '3745e48...08d59ae'
});
// Using a custom N parameter. Must be a power of two.
scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // '3745e48...aa39b34'
});

Parameters

password: BinaryLike
keylen: number
callback: (
err: Error | null,
derivedKey: Buffer,
) => void

Return Type

void
scrypt(
password: BinaryLike,
salt: BinaryLike,
keylen: number,
options: ScryptOptions,
callback: (
err: Error | null,
derivedKey: Buffer,
) => void
,
): void

Parameters

password: BinaryLike
keylen: number
options: ScryptOptions
callback: (
err: Error | null,
derivedKey: Buffer,
) => void

Return Type

void