#hotp #totp #otp #authenticator

otps

即插即用HOTP和TOTP客户端,用于生成一次性密码

2个版本

0.1.1 2023年11月12日
0.1.0 2023年11月12日

#1013 in 身份验证

MIT 许可证

9KB
149

此包是一个库,旨在提供即插即用的HOTP和TOTP客户端,用于生成一次性密码。

HOTP

与base32密钥字符串一起工作

use otps::HotpBuilder;

let mut hotp_client = HotpBuilder::new()
  .base32_secret("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ")
  .build()
  .expect("failed to initialize HOTP client");

assert_eq!(hotp_client.generate(), "755224");

hotp_client.increment_counter();
assert_eq!(hotp_client.generate(), "287082");

如果密钥字符串不是base32编码,您应使用以下方法替代.key(secret_string.as_bytes().to_owned()),而不是使用.base32_secret方法。

TOTP

与base32密钥字符串一起工作

use otps::TotpBuilder;
let mut totp_cleint = TotpBuilder::new()
  .base32_secret("GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ")
  .build()
  .expect("failed to initialize TOTP client");
let totp_code = totp_cleint.generate();
println!("TOTP: {}", totp_code);

如果密钥字符串不是base32编码,您应使用以下方法替代.key(secret_string.as_bytes().to_owned()),而不是使用.base32_secret方法。

依赖关系

~7–15MB
~279K SLoC