参考 Rust Cookbook - Encryption
使用 ring::pbkdf2的密钥派生函数 pbkdf2::derive 来生成加盐密码的哈稀。 使用pbkdf2::verify验证哈希是否正确。 随机盐使用 rand::thread_rng 生成随机字节数组,再转为 64 位字符串。
用到的库
- ring pbkdf2 加密算法库
- std::num::NonZeroU32 指定算法加密迭代次数
- data_encoding::HEXLOWER 字节数组和 16 进制字符串互转
- rand::Rng 随机数生成
- once_cell::sync::Lazy 配合 Arc 简化全局数据延迟生成
- anyhow 简化错误处理
代码实现
单元测试
测试结果输出类似: