#otp #hotp #totp #password #sha-1

不依赖 std minotp

Rust 的极简 OTP 库

2 个稳定版本

1.1.0 2024年2月9日
1.0.0 2024年2月5日
0.1.1 2024年2月4日
0.1.0 2024年2月4日

#937 in 加密

每月 26 次下载

MIT/Apache

19KB
246 代码行

minotp

GitHub Release

Rust 的极简 OTP 库。

许可证:MIT 或 Apache-2.0

使用方法

安装

minotp 添加到您的项目中。

cargo add minotp@1

还需要所有您想要的哈希库(例如,Rust Crypto 的 SHA1)。

cargo add sha1

TOTP(常用)

use minotp::*;
use sha1::Sha1;

let secret = b"test";

let totp = Totp::<Sha1>::from_bytes(secret, COMMON_INTERVAL).unwrap();

// Get remaining seconds
let _remaining_seconds = totp.remaining_sec();

// Get token as a 6-digit owned string
let _token = totp.gen_6_str();

// -- snip -- //

如果您必须处理一个 Base32 编码的秘密,请使用编码包对其进行解码。

例如,使用 data_encoding

use data_encoding::BASE32;
use minotp::*;
use sha1::Sha1;

let secret_base32_str = "ORSXG5A=";

let secret = BASE32.decode(secret_base32_str.as_bytes()).unwrap();

let totp = Totp::<Sha1>::from_bytes(&secret, COMMON_INTERVAL).unwrap();

let _token = totp.gen_6_str();

// -- snip -- //

发现任何错误吗?

你在开玩笑吧。 如果发现了,现在就提交一个问题!

依赖项

~340–690KB
~13K SLoC