#password-hashing #scrypt #firebase #pure #algorithm #script

firebase-scrypt

Firebase的scrypt密码哈希算法的纯Rust实现

4个版本

0.2.1 2023年9月8日
0.2.0 2022年10月4日
0.1.1 2022年10月3日
0.1.0 2022年10月2日

#1905 in 加密学

MIT 许可证

19KB
260

Firebase Scrypt (for Rust)

Firebase的scrypt密码哈希算法的纯Rust实现。

Crates.io Documentation

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
firebase-scrypt = "0.2"

用法

使用 simple 功能

use firebase_scrypt::FirebaseScrypt;

const SALT_SEPARATOR: &str = "Bw==";
const SIGNER_KEY: &str = "jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA==";
const ROUNDS: u32 = 8;
const MEM_COST: u32 = 14;

let firebase_scrypt = FirebaseScrypt::new(SALT_SEPARATOR, SIGNER_KEY, ROUNDS, MEM_COST);

let password = "user1password";
let salt = "42xEC+ixf3L2lw==";
let password_hash ="lSrfV15cpx95/sZS2W9c9Kp6i/LVgQNDNC/qzrCnh1SAyZvqmZqAjTdn3aoItz+VHjoZilo78198JAdRuid5lQ==";

assert!(firebase_scrypt.verify_password(password, salt, password_hash).unwrap())

使用 verify_password 函数而不使用 FirebaseScrypt

use firebase_scrypt::verify_password;

const SALT_SEPARATOR: &str = "Bw==";
const SIGNER_KEY: &str = "jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA==";
const ROUNDS: u32 = 8;
const MEM_COST: u32 = 14;

let password = "user1password";
let salt = "42xEC+ixf3L2lw==";
let password_hash ="lSrfV15cpx95/sZS2W9c9Kp6i/LVgQNDNC/qzrCnh1SAyZvqmZqAjTdn3aoItz+VHjoZilo78198JAdRuid5lQ==";

let is_valid = verify_password(
     password,
     password_hash,
     salt,
     SALT_SEPARATOR,
     SIGNER_KEY,
     ROUNDS,
     MEM_COST,
).unwrap();

MSRV

最低支持的Rust版本是: 1.59

依赖项

~1MB
~24K SLoC