@yutons/notp
Version:
one-time password generator for javascript
62 lines (61 loc) • 1.93 kB
TypeScript
import { Algorithm } from "./default";
/**
* HOTP (HMAC-based One-Time Password) 算法实现
* 使用时间戳作为计数器
* 遵循 RFC 4226 标准
* 兼容浏览器环境
*/
export declare class HOTP {
private _secret;
private _counter;
private _digits;
private _algorithm;
/**
* 构造函数
* @param secret - 共享密钥 (通常为 Base32 编码)
* @param counter - 计数器初始值
* @param digits - 生成的一次性密码的位数,默认为 6
* @param algorithm - HMAC 哈希算法,默认为 'sha1'
*/
constructor(secret: string, counter?: number, digits?: number, algorithm?: Algorithm);
get secret(): string;
set secret(value: string);
get counter(): number;
set counter(value: number);
get digits(): number;
set digits(value: number);
get algorithm(): Algorithm;
set algorithm(value: Algorithm);
/**
* 生成指定计数器值的一次性密码
* @param counter - 指定的计数器值 (可选,如果不提供则使用实例的 counter)
* @returns 生成的一次性密码 (字符串)
*/
generate(counter?: number): string;
/**
* 验证提供的 OTP 是否与指定计数器值生成的 OTP 匹配
* @param otp - 要验证的 OTP (字符串)
* @param counter - 用于生成预期 OTP 的计数器值
* @returns 验证结果 (true 或 false)
*/
verify(otp: string, counter: number): boolean;
/**
* 将整数转换为 8 字节的 Uint8Array (大端序)
*/
private intTo8Bytes;
/**
* 将 Uint8Array 转为十六进制字符串
*/
private bytesToHex;
/**
* 将十六进制字符串转为 Uint8Array
*/
private hexToBytes;
next(): string;
getConfiguration(): {
secret: string;
counter: number;
digits: number;
algorithm: 'sha1' | 'sha256' | 'sha512' | 'sm3';
};
}