# hitotp 在crates.io上也搜索到几个和TOTP相关的,比如totp, 功能过于简单,还有`totp_rs`,功能很丰富. 本crate的特点在于: 1. `no_std`,减少二进制大小的同时尽可能适用更多的场景. 2. 依赖openssl的libcrypto.so,现有大部分的环境都具备,减少RUST代码的二进制大小 3. 支持key为base32/base64编码或者未编码 4. 支持sha1/sha256/sha512 5. 同时提供库和命令行工具,库接口可方便用于服务端的验证, 命令行工具也可以通过cargo install安装使用. ## Examle ```rust let totp = hitotp::Totp::from_base32(key); let code = totp.hash_now(); ``` 指定具体时间,在服务端验证时可能需要: ## Example ```rust let totp = hitotp::Totp::from_base32(key); let now = hitotp::Totp::now(); let code = totp.hash(now - 30); ```