password-script/src/main.rs

34 lines
1.0 KiB
Rust

use chbs::{component::{phrase::BasicPhraseBuilder, word::{FixedWordSetProvider, WordCapitalizer}}, entropy::{Entropy, HasEntropy}, prelude::WordStyler, probability::Probability, scheme::Scheme, word::WordList};
fn main() {
let wordlist = WordList::builtin_eff_general_short();
let provider = FixedWordSetProvider::new(wordlist.sampler(), 6);
let capitalizer = WordCapitalizer::new(Probability::Sometimes(0.3), Probability::Sometimes(0.8));
let builder = BasicPhraseBuilder::new("".into());
let scheme = Scheme::new(
Box::new(provider),
vec![Box::new(capitalizer), Box::new(Terezifier{})],
Box::new(builder),
Vec::new(),
);
println!("{}", scheme.generate());
}
#[derive(Debug)]
struct Terezifier {}
impl WordStyler for Terezifier {
fn style_word(&self, word: String) -> String {
word.replace(&['i', 'I'], "1")
.replace(&['e', 'E'], "3")
.replace(&['a', 'A'], "4")
}
}
impl HasEntropy for Terezifier {
fn entropy(&self) -> Entropy {
Entropy::one()
}
}