unit-testing - 使用谷歌验证器进行单元测试

标签 unit-testing authentication

我目前正在将“Google Authenticator”应用程序与我正在开发的网站一起使用,我想知道是否有可能(无论 Google 是否提供)编写单元测试来显示双重验证的一些可能输出认证程序。

我想知道是否还有一个类允许我在我的计算机上生成它,以便我可以对结果进行单元测试,而不是使用手机生成数字代码。

最佳答案

如果您知道预共享的 secret 字符串(一个编码在您使用 Authenticator 应用程序扫描的二维码中),您就可以生成代码。这是 Python 中的代码(via @TadeckGitHub):

import hmac, base64, struct, hashlib, time

def get_hotp_token(secret, intervals_no):
    key = base64.b32decode(secret, True)
    msg = struct.pack(">Q", intervals_no)
    h = hmac.new(key, msg, hashlib.sha1).digest()
    o = ord(h[19]) & 15
    h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
    return h

def get_totp_token(secret):
    return get_hotp_token(secret, intervals_no=int(time.time())//30)

secret = 'MZXW633PN5XW6MZX'
for i in xrange(1, 10):
    print i, get_hotp_token(secret, intervals_no=i)

关于unit-testing - 使用谷歌验证器进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254735/

相关文章:

c - 如何创建由简单字符数组支持的文件描述符?

c# - DocumentDB 存储库单元测试

mongodb - Spring boot 嵌入式 MongoDb 数据预填充

javascript - 如何从 Code Coverage Istanbul Reporter 中排除模拟文件

authentication - ASP.Net Core、Angular2 和基于 token 的身份验证

java - 我应该单元测试hashCode/equals/toString吗?

php - Laravel 5.4设置除注销路由外的所有身份验证路由-使用自定义注销路由/ Controller

c# - 如何使用 json 通过 SSL 在 IIS 中托管的 WCF 端点上使用基本身份验证?

java - JMX RMI 身份验证不起作用

Delphi XE2 DataSnap - 访问服务器方法模块中的 REST 连接属性