scrypt.js

Scrypt in Node.js and in the browser. Fast & simple.

Usage no npm install needed!

<script type="module">
  import scryptJs from 'https://cdn.skypack.dev/scrypt.js';
</script>

README

scrypt.js

This purpose of this library is to provide a single interface to both a C and a pure Javascript based scrypt implementation. Supports browserify and will select the best option when running under Node or in the browser.

It is using the following two underlying implementations:

  • scryptsy for the pure Javascript implementation
  • scrypt for the C version

It only supports hashing. Doesn't offer an async option and doesn't implement the HMAC format. If you are looking for those, please use the Node scrypt library.

API

There is only one method returned for hashing using scrypt. All parameters are mandatory except the progress callback:

  • key - The key/passphrase. Although it accepts a String, please use a Buffer to avoid problems later.
  • salt - The salt. Same as with the key, please try to use a Buffer.
  • n - Iteration count.
  • r - Block size for the underlying hash.
  • p - Parallelization factor.
  • dklen - The derived key length aka. output size.

Example usage

// Load default implementation
var scrypt = require('scrypt.js')

// Load specific version
var scrypt = require('scrypt.js/js') // pure Javascript
var scrypt = require('scrypt.js/node') // C on Node

scrypt(key, salt, n, r, p, dklen, progressCb) // returns Buffer

The progress callback

This callback (progressCb in the above example) is not available on Node.

Every 1000 iterations it will return an object with the following properties:

  • current - Current iteration number.
  • total - Total iterations.
  • percent - Progress in percentage (double).

Other scrypt implementations