Skip to main content
Deno 2 is finally here 🎉️
Learn more

BCrypt

deno doc release ci

This is a port from jBCrypt to TypeScript for use in Deno.

It has zero third-party dependencies.

Running in sync requires no permissions. Running in async functionality requires –allow-net

Import

If you don’t want to specify a specific version and are happy to work with breaking changes, you can import this module like so:

import * as bcrypt from "https://deno.land/x/bcrypt/mod.ts";

To ensure that you’ve got a specific version, it’s recommend to import this module specifying a specific release like so:

import * as bcrypt from "https://deno.land/x/bcrypt@v0.3.0/mod.ts";

Usage

Async

The Async implementation requires WebWorkers which require –allow-net to import Deno standard modules from inside the Worker.

const hash = await bcrypt.hash("test");

To check a password:

const result = await bcrypt.compare("test", hash);

To hash a password with a manually generated salt:

const salt = await bcrypt.genSalt(8);
const hash = await bcrypt.hash("test", salt);

Sync/Blocking

It is not recommended to use this unless you’re running a quick script since the BCrypt algorithm is computationally quite expensive. For example, if you’re running a server and make multiple calls to it, other requests will be blocked. Using the Async methods are recommended.

To hash a password (with auto-generated salt):

const hash = bcrypt.hashSync("test");

To check a password:

const result = bcrypt.compareSync("test", hash);

To hash a password with a manually generated salt:

const salt = bcrypt.genSaltSync(8);
const hash = bcrypt.hashSync("test", salt);

Older versions of Deno and/or BCrypt

Older versions of Deno will require an older version of this library (specifically < 0.3.0) because of the introduction of TextEncoder. However, older version of this library require the --unstable flag when running.

Warnings

BCrypt v0.3.0 and below should NOT be used with Deno 1.23.0 or later since there’s been a breaking change in how Deno interprets the code and completely bypasses the cipher. Ensure that if you’re running Deno 1.23.0 or later that you’re using the latest version of BCrypt.

Issues

For any bug reports or feature requests, please create an issue on GitHub.