#password #diceware #password-generator #correct #setup #horse

chbs

提供基于单词表的安全密码生成功能的crate

12个版本

0.1.1 2022年7月20日
0.1.0 2021年1月4日
0.0.10 2020年3月16日
0.0.9 2019年12月5日
0.0.1 2018年8月1日

#552加密学

Download history 453/week @ 2024-03-13 449/week @ 2024-03-20 332/week @ 2024-03-27 626/week @ 2024-04-03 477/week @ 2024-04-10 498/week @ 2024-04-17 424/week @ 2024-04-24 317/week @ 2024-05-01 330/week @ 2024-05-08 403/week @ 2024-05-15 430/week @ 2024-05-22 395/week @ 2024-05-29 333/week @ 2024-06-05 608/week @ 2024-06-12 421/week @ 2024-06-19 308/week @ 2024-06-26

1,736 每月下载量
14 个crate中(6个直接)使用

MIT 许可证

59KB
591

Build status on GitLab CI Newest release on crates.io Documentation Number of downloads on crates.io Project license

注意:此crate仍在开发中,API可能直到稳定化之前都会发生变化

Rust库:正确的马电池固定件

这是一个基于单词表的安全、易用、可配置和可扩展的密码生成库,通常称为diceware

xkcd-img

名称 chbs 是众所周知的“正确的马电池固定件”密码的缩写,该密码起源于上面显示的XKCD漫画。

此库使用加密安全的随机化,可用于生成秘密密码*

特性

  • 简单安全密码生成
  • 可配置的生成方案以满足您的需求
  • 使用内置或自定义单词表
  • 计算密码熵
  • 易于使用的抽象API
  • 非常易于扩展,可以按照您喜欢的任何方式设置

要求

  • Rust 1.42或更高版本(带有std

待办事项

在稳定化之前需要考虑以下事项

  • 使用安全的字符串?
  • 额外的样式和配置选项
    • 添加数字
    • 添加特殊字符
    • 不同的分隔符
    • 生成的单词(基于字符序列)
    • 用相似外观的序列替换字符(a4o()

概念

由于此crate中的密码生成系统被彻底抽象化,因此了解此crate中使用的概念非常重要。

以下是密码生成所需的条件

  • Scheme 定义密码的生成方式。密码仅通过方案生成。
  • Scheme 包含表示密码如何构建和样式的组件。存在四种类型的组件,定义密码生成步骤。对于某些类型必须定义,对于其他类型任何数量都行
    1. WordSetProvider (必需1):提供用于密码中的单词列表。
    2. WordStyler (>=0 必需): 样式密码短语,例如,首字母大写。
    3. PhraseBuilder (1 必需): 从一组密码短语词中构建一个短语。
    4. PhraseStyler (>=0 必需): 样式整个密码短语。

需要理解的内容

  • 密码短语生成方案通常通过使用配置结构来创建。这种结构将提供各种可配置字段,并基于它构建相应的方案以生成密码短语。

生成密码短语的一般步骤

  • 构建并配置配置结构,例如 BasicConfig
  • 配置结构创建相应的密码短语生成方案。
  • 使用该方案生成所需数量的密码短语。
  • 相反,可以使用 passphrase() 辅助方法生成不带配置的密码短语,以方便使用。

看看,这并不困难,但允许极大的可扩展性。你可能不会使用这个包提供的大多数功能。
查看 BasicConfig 了解如何配置您的第一个密码短语生成器。

其他需要了解的内容

  • 此包提供了一组用于特定任务的组件,可以构建自定义组件。
  • 此包提供了一个 WordList 结构,用于存储静态词表,可以使用内置的词表或从指定的文件加载词表。
  • 可以根据 WordList 构造一个 WordSampler,以允许以均匀的方式随机采样单词。这样的采样器通常用作配置结构中的单词提供者。

示例

以下是如何使用此包的一些基本示例。

首先在您的 Cargo.toml 中将 chbs 添加为依赖项

[dependencies]
chbs = "0.0.8"

使用辅助函数应用库默认值生成不带配置的密码短语(passphrase.rs

extern crate chbs;
use chbs::passphrase;

println!("Passphrase: {:?}", passphrase());

使用 cargo run --example passphrase 运行它。

推荐使用配置生成密码短语,以下是一个基本示例(passphrase_config.rs

extern crate chbs;
use chbs::{config::BasicConfig, prelude::*, probability::Probability};

// Build a custom configuration to:
let mut config = BasicConfig::default();
config.words = 8;
config.separator = "-".into();
config.capitalize_first = Probability::from(0.33);
config.capitalize_words = Probability::half();
let mut scheme = config.to_scheme();

println!("Passphrase: {:?}", scheme.generate());
println!("Entropy: {:?}", scheme.entropy().bits());

使用 cargo run --example passphrase_config 运行它。

使用单词采样器根据词表生成无限数量的随机单词(sampler.rs

extern crate chbs;
use chbs::word::WordList;

let words = WordList::default();
let sampler = words.sampler().into_iter();

for word in sampler.take(8) {
    println!("Sampled word: {:?}", word);
}

使用 cargo run --example sampler 运行它。

查看 ./examples 目录中的所有示例。

附加说明

  • 此包仍在开发中,因此应谨慎使用
  • 此库生成的密码或密码短语的质量不提供任何保证
  • 熵计算可能存在错误

许可证

本项目采用MIT许可证发布。请查看LICENSE文件获取更多信息。

依赖项

~2.5MB
~54K SLoC