password-script/src/main.rs

34 lines
1.0 KiB
Rust
Raw Normal View History

2024-04-25 00:38:53 +00:00
use chbs::{component::{phrase::BasicPhraseBuilder, word::{FixedWordSetProvider, WordCapitalizer}}, entropy::{Entropy, HasEntropy}, prelude::WordStyler, probability::Probability, scheme::Scheme, word::WordList};
2021-06-03 21:53:52 +00:00
fn main() {
let wordlist = WordList::builtin_eff_general_short();
let provider = FixedWordSetProvider::new(wordlist.sampler(), 6);
2024-04-25 00:38:53 +00:00
let capitalizer = WordCapitalizer::new(Probability::Sometimes(0.3), Probability::Sometimes(0.8));
2021-06-03 21:53:52 +00:00
let builder = BasicPhraseBuilder::new("".into());
let scheme = Scheme::new(
Box::new(provider),
2024-04-25 00:38:53 +00:00
vec![Box::new(capitalizer), Box::new(Terezifier{})],
2021-06-03 21:53:52 +00:00
Box::new(builder),
Vec::new(),
);
println!("{}", scheme.generate());
}
2024-04-25 00:38:53 +00:00
#[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()
}
}