#password-hashing #bcrypt #hashing #password

nightly no-std bcrypter

纯 Rust 实现的 bcrypt 密码哈希函数。支持 no_std

2 个版本

使用旧的 Rust 2015

0.1.1 2018 年 10 月 20 日
0.1.0 2018 年 10 月 20 日

#11#bcrypt

MIT/Apache

15KB
256

BCrypter

Crates.io Build Status Crates.io

基于 Blowfish 密码的 bcrypt 哈希函数的纯 Rust 实现。目前仅运行在 nightly 构建。完整的 API 文档可以在 这里 找到

安装

在你的 Cargo.toml 文件中

[dependencies]
bcrypter = "0.1.1"

使用

基本哈希

extern crate bcrypter;
use bcrypter::password;

let pw = "hunter2".to_string();
let result = password(pw).hash().unwrap();
let bcrypt_hash_string = result.hash_string;

自定义成本

let result = password(pw)
                .cost(6)
                .hash()
                .unwrap();

自定义盐

let salt = [0u8; 16];
let result = password(pw)
                .salt(salt)
                .cost(8)
                .hash()
                .unwrap();

验证密码

let known_hash = "$2a$04$7eAf8viXin8zazyvaU2HLuZGEbvaHy/lsnlG.HFWkBST5irHhXKJO".to_string();
let correct_password : bool = password(pw)
                                .verify(known_hash)
                                .unwrap()

原始摘要

let result = password(pw).hash().unwrap();
let digest_bytes : [u8: 24] = result.digest;

注意

  • 默认成本为 12

  • 当没有提供盐参数时,使用随机 16 字节数组。

  • 最大密码输入为 72 字节,超过该值将被截断而不是引发错误。如果你需要更大的输入,请考虑先进行哈希处理。

依赖

~800KB
~13K SLoC