UNPKG

@yutons/notp

Version:

one-time password generator for javascript

62 lines (61 loc) 1.93 kB
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'; }; }