5 releases
0.1.4 | Nov 17, 2023 |
---|---|
0.1.3 | Nov 17, 2023 |
0.1.2 | Nov 17, 2023 |
0.1.1 | Nov 16, 2023 |
0.1.0 | Nov 16, 2023 |
#703 in Authentication
12KB
261 lines
Contains (ELF exe/lib, 9KB) a.out
hitotp
在crates.io上也搜索到几个和TOTP相关的,比如totp, 功能过于简单,还有totp_rs
,功能很丰富.
本crate的特点在于:
no_std
,减少二进制大小的同时尽可能适用更多的场景.- 依赖openssl的libcrypto.so,现有大部分的环境都具备,减少RUST代码的二进制大小
- 支持key为base32/base64编码或者未编码
- 支持sha1/sha256/sha512
- 同时提供库和命令行工具,库接口可方便用于服务端的验证, 命令行工具也可以通过cargo install安装使用.
Examle
let totp = hitotp::Totp::from_base32(key);
let code = totp.hash_now();
指定具体时间,在服务端验证时可能需要:
Example
let totp = hitotp::Totp::from_base32(key);
let now = hitotp::Totp::now();
let code = totp.hash(now - 30);
lib.rs
:
no_std环境,适用于运行环境已经有libcrypto.so提供HMAC和BASE64算法. TOTP也经常使用BASE32算法,采用了支持no_std的crate: data_encoding.
Dependencies
~150KB