Rust密码生成库mkpasswd的使用:安全可靠的随机密码生成与哈希工具
Rust密码生成库mkpasswd的使用:安全可靠的随机密码生成与哈希工具
安装
使用cargo安装:
cargo install mkpasswd
安装后即可使用mkpasswd
命令。
使用
基本用法
生成一个32位包含特殊字符的随机密码:
mkpasswd
自定义密码长度
生成10位密码:
mkpasswd 10
生成多个密码
生成5个密码:
mkpasswd -n 5
使用预设字符集
mkpasswd提供多种预设字符集:
--password a-z, A-Z, 0-9, each of =+-*/,;:.!?&|^<>(){}_%@#
--latin-numbers a-z, A-Z, 0-9
--base64 a-z, A-Z, 0-9, +, /
--base64-url a-z, A-Z, 0-9, -, _
--numbers 0-9
--latin a-z, A-Z
--latin-lower a-z
--latin-lower-numbers a-z, 0-9
--latin-upper A-Z
--latin-upper-numbers A-Z, 0-9
自定义字符集
使用指定字符生成密码:
mkpasswd -a "qwertyQWERTY"
完整示例代码
use mkpasswd::{PasswordGenerator, Alphabet};
fn main() {
// 使用默认配置生成密码
let generator = PasswordGenerator::default();
let password = generator.generate();
println!("默认密码: {}", password);
// 生成10位密码
let password = generator.with_length(10).generate();
println!("10位密码: {}", password);
// 使用Base64字符集
let base64_generator = PasswordGenerator::new().with_alphabet(Alphabet::Base64);
let password = base64_generator.generate();
println!("Base64密码: {}", password);
// 自定义字符集
let custom_generator = PasswordGenerator::new()
.with_custom_alphabet("qwertyQWERTY1234567890!@#$%^&*");
let password = custom_generator.generate();
println!("自定义密码: {}", password);
// 生成多个密码
let passwords = generator.with_count(5).generate_multiple();
println!("多个密码: {:?}", passwords);
}
作为库使用
在Cargo.toml中添加依赖:
[dependencies]
mkpasswd = "0.3.0"
完整示例demo
use mkpasswd::{PasswordGenerator, Alphabet};
fn main() {
// 示例1:生成默认32位密码
let default_pass = PasswordGenerator::default().generate();
println!("示例1 - 默认密码: {}", default_pass);
// 示例2:生成8位数字密码
let num_pass = PasswordGenerator::new()
.with_length(8)
.with_alphabet(Alphabet::Numbers)
.generate();
println!("示例2 - 8位数字密码: {}", num_pass);
// 示例3:生成3个Base64-url风格的密码
let base64_passwords = PasswordGenerator::new()
.with_alphabet(Alphabet::Base64Url)
.with_count(3)
.generate_multiple();
println!("示例3 - Base64-url密码: {:?}", base64_passwords);
// 示例4:自定义字符集生成密码
let custom_pass = PasswordGenerator::new()
.with_custom_alphabet("ABCDEF123")
.with_length(12)
.generate();
println!("示例4 - 自定义字符集密码: {}", custom_pass);
// 示例5:生成5个16位包含大小写和特殊字符的密码
let complex_passwords = PasswordGenerator::new()
.with_length(16)
.with_alphabet(Alphabet::Password)
.with_count(5)
.generate_multiple();
println!("示例5 - 复杂密码组: {:?}", complex_passwords);
}
许可证
MIT许可证
1 回复
Rust密码生成库mkpasswd的使用:安全可靠的随机密码生成与哈希工具
mkpasswd
是一个Rust实现的密码生成和哈希工具库,提供了安全可靠的随机密码生成功能以及密码哈希能力。它特别适合需要生成随机密码或安全存储密码的应用场景。
安装方法
在Cargo.toml中添加依赖:
[dependencies]
mkpasswd = "0.3"
主要功能
- 随机密码生成
- 密码哈希(支持多种哈希算法)
- 密码验证
基本使用方法
1. 生成随机密码
use mkpasswd::{Generator, PasswordGenerator};
fn main() {
let generator = Generator::default();
let password = generator.generate().unwrap();
println!("生成的随机密码: {}", password);
}
默认生成12个字符的密码,包含大小写字母、数字和特殊字符。
2. 自定义密码生成
use mkpasswd::{Generator, PasswordGenerator};
fn main() {
let generator = Generator::builder()
.length(16) // 密码长度
.numbers(true) // 包含数字
.lowercase_letters(true) // 包含小写字母
.uppercase_letters(true) // 包含大写字母
.symbols(true) // 包含特殊字符
.spaces(false) // 不包含空格
.build()
.unwrap();
let password = generator.generate().unwrap();
println!("自定义生成的密码: {}", password);
}
3. 密码哈希
use mkpasswd::{hash, HashAlgorithm};
fn main() {
let password = "my_secure_password";
// 使用SHA-512算法哈希
let hashed = hash(password, HashAlgorithm::SHA512).unwrap();
println!("SHA-512哈希结果: {}", hashed);
// 使用Crypt算法哈希
let hashed = hash(password, HashAlgorithm::Crypt).unwrap();
println!("Crypt哈希结果: {}", hashed);
}
4. 密码验证
use mkpasswd::{verify, HashAlgorithm};
fn main() {
let password = "my_secure_password";
let hashed = mkpasswd::hash(password, HashAlgorithm::SHA512).unwrap();
// 验证密码
let is_valid = verify(password, &hashed).unwrap();
println!("密码验证结果: {}", is_valid);
}
支持的哈希算法
mkpasswd
支持多种哈希算法:
SHA256
SHA512
Crypt
(Unix crypt风格)MD5
(不推荐,仅用于兼容旧系统)Argon2
(需要启用argon2
特性)
高级用法:生成多个密码
use mkpasswd::{Generator, PasswordGenerator};
fn main() {
let generator = Generator::default();
// 生成5个随机密码
let passwords: Vec<String> = (0..5)
.map(|_| generator.generate().unwrap())
.collect();
println!("生成的密码列表:");
for (i, pwd) in passwords.iter().enumerate() {
println!("{}: {}", i + 1, pwd);
}
}
安全建议
- 生成的密码长度建议至少12个字符
- 对于重要系统,建议启用所有字符类型(大小写字母、数字、符号)
- 存储密码时总是使用强哈希算法(推荐SHA-512或Argon2)
- 避免使用MD5等弱哈希算法
mkpasswd
库提供了简单易用的API来满足大多数密码生成和哈希需求,同时保持了Rust的安全性和高性能特点。
完整示例代码
下面是一个完整的示例,展示了mkpasswd库的主要功能:
use mkpasswd::{Generator, PasswordGenerator, hash, verify, HashAlgorithm};
fn main() {
// 1. 生成随机密码
let default_generator = Generator::default();
let default_password = default_generator.generate().unwrap();
println!("默认生成的密码: {}", default_password);
// 2. 自定义密码生成
let custom_generator = Generator::builder()
.length(16)
.numbers(true)
.lowercase_letters(true)
.uppercase_letters(true)
.symbols(true)
.spaces(false)
.build()
.unwrap();
let custom_password = custom_generator.generate().unwrap();
println!("自定义生成的密码: {}", custom_password);
// 3. 密码哈希
let password = "my_secure_password_123!";
// 使用SHA-512哈希
let sha512_hashed = hash(password, HashAlgorithm::SHA512).unwrap();
println!("SHA-512哈希结果: {}", sha512_hashed);
// 使用Argon2哈希 (需启用argon2特性)
#[cfg(feature = "argon2")]
{
let argon2_hashed = hash(password, HashAlgorithm::Argon2).unwrap();
println!("Argon2哈希结果: {}", argon2_hashed);
}
// 4. 密码验证
let is_valid = verify(password, &sha512_hashed).unwrap();
println!("密码验证结果: {}", is_valid);
// 5. 生成多个密码
println!("\n生成5个随机密码:");
let passwords: Vec<String> = (0..5)
.map(|_| default_generator.generate().unwrap())
.collect();
for (i, pwd) in passwords.iter().enumerate() {
println!("{}: {}", i + 1, pwd);
}
}
这个完整示例展示了:
- 使用默认配置生成随机密码
- 使用自定义配置生成更复杂的密码
- 使用不同算法对密码进行哈希
- 验证密码的正确性
- 批量生成多个随机密码
要运行这个示例,请确保在Cargo.toml中添加了mkpasswd依赖,并根据需要启用argon2特性:
[dependencies]
mkpasswd = { version = "0.3", features = ["argon2"] }