You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OTP.NET生成的OTP PIN与otptest.de网站不一致问题求助

解决OTP.NET生成PIN与otptest.de不一致的问题

以下是排查和修复的关键步骤:

  • 确认OTP类型匹配:检查otptest.de选择的是TOTP还是HOTP,代码中必须对应使用Totp或Hotp类,类型不匹配直接导致PIN差异。
  • 验证密钥格式与解析:确保代码中的密钥和otptest.de输入的完全一致,注意OTP.NET默认使用Base32编码解析密钥。如果网站输入的是Base32格式密钥,代码需用Base32Encoding.ToBytes()正确转换为字节数组;若为明文密钥,需直接转为UTF-8字节。
  • 同步系统时间(仅TOTP场景):TOTP依赖UTC时间同步,本地机器时间与otptest.de服务器时间误差需控制在30秒内。代码中务必使用DateTime.UtcNow计算PIN,避免本地时区时间导致偏差。
  • 匹配哈希算法:otptest.de默认使用SHA-1,若网站修改为SHA-256/SHA-512,代码初始化Totp时需指定对应算法,示例:
    var totp = new Totp(key, mode: OtpHashMode.Sha256);
    
  • 核对步长与PIN长度:TOTP默认步长为30秒,PIN默认6位,需确保代码中的step和digits参数与otptest.de的设置完全一致。

针对你的代码,重点排查:

密钥是否完成正确的编码转换、是否使用UTC时间计算、哈希算法/步长/PIN位数是否与网站配置匹配。

比如正确的Base32密钥处理示例:

var base32Key = "你的Base32密钥";
var keyBytes = Base32Encoding.ToBytes(base32Key);
var totp = new Totp(keyBytes, step: 30, digits: 6, mode: OtpHashMode.Sha1);
var pin = totp.ComputeTotp(DateTime.UtcNow);

内容的提问来源于stack exchange,提问作者Emre Özgüroğlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:22:39