1use secretgenerator::{PassphraseOptions, PasswordOptions, entropy, passphrase, password};
4
5fn main() -> Result<(), secretgenerator::Error> {
6 let pw = password(
7 PasswordOptions::default()
8 .length(24)
9 .charset("alphanum-symbols-v1")
10 .require_classes("lower,upper,digit,symbol"),
11 )?;
12 println!("password: {} ({:.1} bits)", pw.password, pw.entropy_bits);
13
14 let phrase = passphrase(PassphraseOptions::default().words(8).separator("-"))?;
15 println!("passphrase: {}", phrase.password);
16
17 let report = entropy("Tr0ub4dor&3")?;
18 println!("Tr0ub4dor&3: {:.1} bits", report.entropy_bits);
19 if let Some(ns) = report
20 .crack_time_estimates
21 .iter()
22 .find(|e| e.profile_id == "nation-state-v1")
23 {
24 println!("crack: {} (nation-state)", ns.human_readable);
25 }
26 Ok(())
27}