totp-lite 是rust的一个轻量 TOTP 实现,支持 sha256/sha512
let secret = "AZKXE3W57Q53ESFUWY4TKEAXIGLC7STL".as_bytes();
// let secret: Vec<u8> = repeat_with(|| fastrand::u8(..)).take(20).collect();
let totp = TOTP::with_default(secret, "MY-PC", "user@localhost");
let timestamp = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs();
let url = totp.get_url();
println!("{}", url);
println!("{}", totp.verify("input you code", timestamp));
// let qrcode = fast_qr::QRBuilder::new(url).build().unwrap();
// let _svg = SvgBuilder::default().shape(Shape::RoundedSquare).to_file(&qrcode, "out.svg");
旨在与其它crates配合使用,而不需要强制下载几十个根本用不上的crates
最小设计,牢记UNIX 精神,做一件事,并将其做好。