【问题标题】:pyotp.TOTP code doesn't match authenticator codepyotp.TOTP 代码与验证器代码不匹配
【发布时间】:2021-02-21 00:04:51
【问题描述】:

我正在尝试使用 python 对 TOTP 的支持以编程方式获取 Microsoft 身份验证器应用程序中可用的 MFA/2FA 代码。我的代码如下所示:

import pyotp
import base64
secret = "mysecretkeyhere".encode( "UTF-8" )
b32Secret = base64.b32encode( secret )
totp = pyotp.TOTP( b32Secret ).now()
print( totp )

mysecretkeyhere是扫描二维码/key,格式为

"otpauth://totp/namehere?secret=16digitsecrethere&issue=issuehere&algorithm=SHA1&digits=6"

当我运行此代码段并与身份验证器应用程序中的 6 位代码进行比较时,我的应用程序和身份验证器应用程序中生成的代码不一致。代码也不会在时间延迟上重叠(使用 while 循环重复执行底部两行测试)。

关于如何让 TOTP 函数返回与我的身份验证器应用程序中相同的代码有什么建议吗?提前致谢。

【问题讨论】:

    标签: python authentication totp


    【解决方案1】:

    我目前正在处理 pyotp 的另一个问题 - 因此找到了您的问题。

    你有一个秘密,那就是一个 OTP-URI,它应该被简单地解析。 According to documentation:

    #!/usr/bin/env python
    
    import pyotp
    
    otp_uri = 'otpauth://totp/namehere?secret=16digitsecrethere&issue=issuerhere&algorithm=SHA1&digits=6'
    otp     = pyotp.parse_uri( otp_uri )
    
    print( otp.now() )
    

    希望仍然支持您的需求 =)
    最佳
    麦克维尼

    【讨论】:

      猜你喜欢
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      相关资源
      最近更新 更多