@node-rs/bcrypt
Version:
Rust bcrypt binding
91 lines (81 loc) ⢠6.35 kB
Markdown
# `@node-rs/bcrypt`


š Fastest bcrypt in Node.js
## Usage
```typescript
export const DEFAULT_COST: 12
export function hashSync(password: string | Buffer, round?: number): string
export function hash(password: string | Buffer, round?: number): Promise<string>
export function verifySync(password: string | Buffer, hash: string | Buffer): boolean
export function verify(password: string | Buffer, hash: string | Buffer): Promise<boolean>
/**
* The same with `verifySync`
*/
export function compareSync(password: string | Buffer, hash: string | Buffer): boolean
/**
* The same with `verify`
*/
export function compare(password: string | Buffer, hash: string | Buffer): Promise<boolean>
export type Version = '2a' | '2x' | '2y' | '2b'
/**
* @param version default '2b'
*/
export function genSaltSync(round: number, version?: Version): string
/**
* @param version default '2b'
*/
export function genSalt(round: number, version?: Version): Promise<string>
```
## Bench
```
,MMMM. Host - xxxxxxxxxxxxxxxxxxxxxxx
.MMMMMM Machine - Mac15,9
MMMMM, Kernel - 24.0.0
.;MMMMM:' MMMMMMMMMM;. OS - macOS 15.0.1 Sequoia
MMMMMMMMMMMMNWMMMMMMMMMMM: DE - Aqua
.MMMMMMMMMMMMMMMMMMMMMMMMWM. WM - Quartz Compositor
MMMMMMMMMMMMMMMMMMMMMMMMM. Packages - 194 (Homebrew), 32 (cargo)
;MMMMMMMMMMMMMMMMMMMMMMMM: Shell - zsh
:MMMMMMMMMMMMMMMMMMMMMMMM: Terminal - warpterminal (Version v0.2024.10.23.14.49.stable_00)
.MMMMMMMMMMMMMMMMMMMMMMMMM. Resolution - 5120x2880@160fps (as 2560x1440)
MMMMMMMMMMMMMMMMMMMMMMMMMMM. 2992x1934@120fps (as 1496x967)
.MMMMMMMMMMMMMMMMMMMMMMMMMM. 2232x1512@60fps (as 1116x756)
MMMMMMMMMMMMMMMMMMMMMMMM Uptime - 1d 2h 32m
;MMMMMMMMMMMMMMMMMMMM. CPU - Apple M3 Max (16)
.MMMM,. .MMMM,. CPU Load - 16%
Memory - 50.1 GB / 134.2 GB
Battery - 78% & Discharging
Disk Space - 624.0 GB / 994.7 GB
```
```text
⯠yarn workspace @node-rs/bcrypt bench
Hash benchmark
āāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāā
ā (index) ā Task Name ā ops/sec ā Average Time (ns) ā Margin ā Samples ā
āāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāā¤
ā 0 ā '@node-rs/bcrypt' ā '20' ā 49142200.63636367 ā '±1.08%' ā 11 ā
ā 1 ā 'node bcrypt' ā '20' ā 49259219.81818187 ā '±1.35%' ā 11 ā
ā 2 ā 'bcryptjs' ā '17' ā 58142116.79999998 ā '±0.36%' ā 10 ā
ā 3 ā 'wasm OpenBSD' ā '17' ā 58318899.99999994 ā '±0.23%' ā 10 ā
ā 4 ā 'wasm Openwall' ā '18' ā 53324629.20000016 ā '±0.37%' ā 10 ā
āāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāā
Verify benchmark
āāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāā
ā (index) ā Task Name ā ops/sec ā Average Time (ns) ā Margin ā Samples ā
āāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāā¤
ā 0 ā '@node-rs/bcrypt' ā '5' ā 192946879.09999993 ā '±0.52%' ā 10 ā
ā 1 ā 'node bcrypt' ā '5' ā 199806404.2 ā '±0.36%' ā 10 ā
ā 2 ā 'bcryptjs' ā '4' ā 231329516.79999986 ā '±0.13%' ā 10 ā
āāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāā
GenSalt benchmark
āāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāā
ā (index) ā Task Name ā ops/sec ā Average Time (ns) ā Margin ā Samples ā
āāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāā¤
ā 0 ā '@node-rs/bcrypt' ā '4,421,897' ā 226.14727567195578 ā '±0.08%' ā 2210949 ā
ā 1 ā 'node bcrypt' ā '4,477,408' ā 223.34345972377827 ā '±0.08%' ā 2238705 ā
ā 2 ā 'bcryptjs' ā '821,556' ā 1217.2015511950851 ā '±0.39%' ā 410779 ā
ā 3 ā 'wasm OpenBSD' ā '3,685,603' ā 271.3259889021118 ā '±0.23%' ā 1842802 ā
ā 4 ā 'wasm Openwall' ā '1,462,251' ā 683.8769076754866 ā '±2.50%' ā 731126 ā
āāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāā
```