#bcrypt #hash #password #web

bcrypt-wasm

使用 bcrypt 简单地哈希和验证密码

4 个版本

0.7.0 2020 年 4 月 9 日
0.6.3 2020 年 1 月 27 日
0.6.2 2020 年 1 月 27 日
0.6.1 2020 年 1 月 27 日

加密学 中排名第 2415

每月下载 28

MIT 许可证

26KB
574

bcrypt

Build Status Documentation

安装

将以下内容添加到 Cargo.toml

bcrypt = "0.7"

最低 Rust 版本为 1.34.0

用法

该包公开了 3 件事: DEFAULT_COST, hash, verify

extern crate bcrypt;

use bcrypt::{DEFAULT_COST, hash, verify};

let hashed = hash("hunter2", DEFAULT_COST)?;
let valid = verify("hunter2", &hashed)?;

成本需要是一个介于 4 和 31 之间的整数(参见基准以了解每个的成本/速度比),DEFAULT_COST 是 12。

基准测试

速度取决于使用的成本:成本越高,速度越慢。以下是我 4 年前的笔记本电脑上的一些基准测试,以提供一些成本/速度比的思路。请注意,我不使用 14 以上,因为它需要太长时间。

test bench_cost_4       ... bench:   1,197,414 ns/iter (+/- 112,856)
test bench_cost_10      ... bench:  73,629,975 ns/iter (+/- 4,439,106)
test bench_cost_default ... bench: 319,749,671 ns/iter (+/- 29,216,326)
test bench_cost_14      ... bench: 1,185,802,788 ns/iter (+/- 37,571,986)

致谢

这个 gist 为哈希分割和空终止提供了帮助。

变更日志

  • 0.7.0: 添加 hash_with_salt 函数并移除 Error::description 实现,因为它已弃用
  • 0.6.3: 添加 hash_with_salt 函数并使 Version::format_version 成为常量
  • 0.6.2: 将 base64 更新到 0.12
  • 0.6.1: 将 base64 更新到 0.11
  • 0.6.0: 允许用户选择 bcrypt 版本,默认为 2b 而不是 2y
  • 0.5.0: 公开内联 bcrypt 函数 + 2018 版本
  • 0.4.0: 将 DEFAULT_COST 常量改为静态
  • 0.3.0: 禁止密码中包含 NULL 字节并更新依赖项
  • 0.2.2: 更新 rand
  • 0.2.1: 更新 rand
  • 0.2.0: 用 blowfish 替换 rust-crypto,使用更多现代 Rust 特性如 ? 并处理更多错误
  • 0.1.6: 更新 rand 和 base64 依赖项
  • 0.1.5: 更新 lazy-static 到 1.0
  • 0.1.4: 用 bcrypt 替换 rustc-serialize 依赖项
  • 0.1.3: 修复当密码 > 72 个字符时发生恐慌的问题
  • 0.1.1: 使 BcryptResult, BcryptError 公开并更新依赖项
  • 0.1.0: 初次发布

依赖项

~1–1.4MB
~26K SLoC