#totp #sm3 #hashing #password #rfc-6238 #sha-256 #algorithm

totp-sm-rs

A TOTP (Time-based One-Time Password) implementation in Rust with SM3 support

3 releases

new 0.1.2 Jan 26, 2025
0.1.1 Jan 22, 2025
0.1.0 Jan 22, 2025

#1666 in Cryptography

Download history 208/week @ 2025-01-19

208 downloads per month

MIT license

21KB
248 lines

TOTP-RS

English | 中文

中文

基于 RFC 6238 标准的 Rust TOTP(基于时间的一次性密码)算法实现,支持多种哈希算法,包括 SHA1、SHA256、SHA512 和国密 SM3。

特性

  • 支持多种哈希算法(SHA1、SHA256、SHA512、SM3)
  • 可配置验证码长度(6 位或 8 位)
  • 可自定义时间步长
  • 支持时区偏移
  • 支持国际化
  • 符合 RFC 6238 标准

安装

Cargo.toml 中添加:

[dependencies]
totp-sm-rs = "0.1.1"

使用方法

use totp_sm_rs::utils::totp::totp::{generate_totp_code, TotpConfig, HashAlgorithm};

// 使用默认配置生成TOTP(SHA1算法,6位验证码)
let secret = "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ";
let code = generate_totp_code(secret, None).unwrap();

// 使用自定义配置生成TOTP
let config = TotpConfig {
    digits: 8,
    time_step: 30,
    timestamp: Some(1234567890),
    timezone_offset: None,
    hash_algorithm: HashAlgorithm::SHA256,
};
let code = generate_totp_code(secret, Some(config)).unwrap();

许可证

本项目采用双重许可证 - 你可以选择使用 Apache License 2.0MIT License 中的任意一个。

Dependencies

~7.5MB
~146K SLoC