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. 随机密码生成
  2. 密码哈希(支持多种哈希算法)
  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);
    }
}

安全建议

  1. 生成的密码长度建议至少12个字符
  2. 对于重要系统,建议启用所有字符类型(大小写字母、数字、符号)
  3. 存储密码时总是使用强哈希算法(推荐SHA-512或Argon2)
  4. 避免使用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);
    }
}

这个完整示例展示了:

  1. 使用默认配置生成随机密码
  2. 使用自定义配置生成更复杂的密码
  3. 使用不同算法对密码进行哈希
  4. 验证密码的正确性
  5. 批量生成多个随机密码

要运行这个示例,请确保在Cargo.toml中添加了mkpasswd依赖,并根据需要启用argon2特性:

[dependencies]
mkpasswd = { version = "0.3", features = ["argon2"] }
回到顶部