BCrypt
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.