#totp #command-line-tool #no-std

no-std bin+lib hitotp

TOTP库和命令行工具

5个版本

0.1.4 2023年11月17日
0.1.3 2023年11月17日
0.1.2 2023年11月17日
0.1.1 2023年11月16日
0.1.0 2023年11月16日

命令行工具中排名1221

MIT/Apache

12KB
261

包含(ELF可执行文件/库,9KB)a.out

hitotp

在crates.io上还找到了几个和TOTP相关的crate,比如totp,功能过于简单,还有totp_rs,功能很丰富。

本crate的特点在于

  1. no_std,在减少二进制大小的同时尽可能适应更多场景。
  2. 依赖于openssl的libcrypto.so,现有大部分环境都具备,减少RUST代码的二进制大小
  3. 支持key为base32/base64编码或未编码
  4. 支持sha1/sha256/sha512
  5. 同时提供库和命令行工具,库接口方便用于服务端验证,命令行工具也可以通过cargo install安装使用。

示例

let totp = hitotp::Totp::from_base32(key);
let code = totp.hash_now();

指定具体时间,在服务端验证时可能需要

示例

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。

依赖项

~155KB