1个稳定版本

1.0.2 2024年3月9日

#1199 in 加密学


用于 ferropassgen-cli

GPL-3.0-or-later

18KB
136

FerroPassGen

Crates.io Downloads Documentation License Dependency Status

ferropassgen 是一个用于生成强大和安全密码及口令的Rust库。它提供了一个灵活且可定制的密码生成框架,可以轻松集成到其他Rust项目中。

特性

  • 生成可自定义长度和字符集的强密码
  • 生成可自定义长度、单词列表、分隔符和单词大小写的记忆口令
  • 轻量级且快速地生成密码
  • 可扩展和可定制的密码生成特性
  • API文档良好,包含示例和错误处理

用法

要在您的Rust项目中使用 ferropassgen,请将以下内容添加到您的 Cargo.toml

[dependencies]
ferropassgen = "0.1.0"

然后,在您的Rust代码中导入必要的模块和结构体

use ferropassgen::{PassGen, PasswordGen, PassphraseGen, PassGenError};

生成密码

要生成密码,创建一个 PasswordGen 实例并调用 generate 方法

let length = 16;
let charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*".chars().collect::<Vec<char>>();
let password_gen = PasswordGen::new(length, charset, None, None)?;
let password = password_gen.generate();

生成口令

要生成口令,创建一个 PassphraseGen 实例并调用 generate 方法

let length = 4;
let wordlist = vec!["apple", "banana", "cherry", "date", "elderberry"]
    .iter()
    .map(|&s| s.to_string())
    .collect::<Vec<String>>();
let separator = Some('_');
let word_case = Some(true);
let passphrase_gen = PassphraseGen::new(length, wordlist, separator, word_case)?;
let passphrase = passphrase_gen.generate();

错误处理

PasswordGenPassphraseGennew 方法返回一个 Result<Self, PassGenError>。请确保适当地处理潜在的错误。

示例

以下是一些使用 ferropassgen 生成密码和口令的示例

use ferropassgen::{PassGen, PasswordGen, PassphraseGen};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Generate a 20-character password with a custom character set
    let length = 20;
    let charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".chars().collect::<Vec<char>>();
    let password_gen = PasswordGen::new(length, charset, None, None)?;
    let password = password_gen.generate();
    println!("Generated Password: {}", password);

    // Generate a passphrase with 5 words, separated by underscores, and in uppercase
    let length = 5;
    let wordlist = vec!["apple", "banana", "cherry", "date", "elderberry"]
        .iter()
        .map(|&s| s.to_string())
        .collect::<Vec<String>>();
    let separator = Some('_');
    let word_case = Some(true);
    let passphrase_gen = PassphraseGen::new(length, wordlist, separator, word_case)?;
    let passphrase = passphrase_gen.generate();
    println!("Generated Passphrase: {}", passphrase);

    Ok(())
}

API文档

有关 ferropassgen API的详细信息,包括结构体、特性和方法,请参阅API文档

许可证

本项目采用GNU Lesser General Public License v3.0 许可。

鸣谢

ferropassgen 源于在Rust中需要一个灵活且可定制的密码生成库的需求。它建立在Rust社区及其创建的库的优秀工作之上。

特别感谢以下库的开发者

依赖关系

~0.5-1MB
~22K SLoC