#hotp #totp #otp

rust-otp

A Rust库,用于执行基于HMAC的一次性密码(HOTP)和时间基于的一次性密码(TOTP)算法

2个稳定版本

2.0.0 2023年12月26日
1.0.0 2023年12月17日

#705 in 身份验证

Download history 12/week @ 2024-04-07 38/week @ 2024-04-14 51/week @ 2024-04-21 47/week @ 2024-04-28 28/week @ 2024-05-05 31/week @ 2024-05-12 33/week @ 2024-05-19 15/week @ 2024-05-26 26/week @ 2024-06-02 26/week @ 2024-06-09 17/week @ 2024-06-16 78/week @ 2024-06-23 43/week @ 2024-06-30 49/week @ 2024-07-07 52/week @ 2024-07-14 22/week @ 2024-07-21

166 每月下载次数
2 个Crate中使用(通过 deepwell

MIT 许可证

8KB
80

rust-otp

Build Status

rust-otp 是一个Rust库,用于按照 HMAC基于的一次性密码算法 (RFC 4226)和 基于时间的一次性密码算法 (RFC 6238)执行。这些也是许多基于移动的2FA应用程序(如 Google AuthenticatorAuthy)用来生成2FA代码的算法。

安装

只需将库作为依赖项添加到您的 Cargo.toml 文件中。

[dependencies.otp]

git = "https://github.com/WesleyBatista/rust-otp"

用法

   // first argument is the secret, second argument is the counter
    println!("HOTP: {:?}", otp::make_hotp("base32secret3232".to_ascii_uppercase().as_str(), 0).unwrap());
    assert_eq!(otp::make_hotp(&"base32secret3232".to_ascii_uppercase(), 0).unwrap(), 260182);

    // first argument is the secret, followed by the time step in seconds (Google
    // Authenticator uses a time step of 30), and then the skew in seconds
    // (often used when calculating HOTPs for a sequence of consecutive
    // time intervals, to deal with potential latency and desynchronization).

    println!("TOTP: {:?}", otp::make_totp(&("base32secret3232".to_ascii_uppercase()), 30, 0).unwrap());
    // there is a non-zero possibility of this assertion failing
    assert_ne!(otp::make_totp(&"base32secret3232".to_ascii_uppercase(), 30, 0).unwrap(), 260182_u32);

许可证

rust-otp 根据 MIT许可证 许可。完整的许可证包含在此存储库中的 LICENSE.md

依赖项

~7–14MB
~273K SLoC