tp522022 发表于 2023-9-14 14:05

【原创】基于时间认证的算法,用于两步验证

出于安全性的考虑 现在有很多网站要求启用2FA(两步认证),例如Github,某个不能透露的网站等等。常见的方式是启用两步验证时网站提供一个验证码,说让你用支持TOTP的App如Google Authenticator等扫描二维码,然后生成一个Code填入进行验证。启用TOTP的两步验证后进行敏感性操作如修改邮箱,修改密码等时会额外要求输入效验码,此限制可有效避免密码泄露时造成更大的损失。
以下是一段基于Python原生库生成TOTP效验码的脚本

import hmac, base64, struct, hashlib, time



def get_hotp_token(secret, intervals_no):
    key = base64.b32decode(secret, True)
    # decoding our key
    msg = struct.pack(">Q", intervals_no)
    # conversions between Python values and C structs represente
    h = hmac.new(key, msg, hashlib.sha1).digest()
    o = h & 15
    # Generate a hash using both of these. Hashing algorithm is HMAC
    h = (struct.unpack(">I", h) & 0x7fffffff) % 1000000
    # unpacking
    return h


def get_totp_token(secret):
    # ensuring to give the same otp for 30 seconds
    x = str(get_hotp_token(secret, intervals_no=int(time.time()) // 30))
    # adding 0 in the beginning till OTP has 6 digits
    while len(x) != 6:
      x += '0'
    return x


def exec():
    print(get_totp_token('VRRWFDP6VWJOKBBB'))
    pass

lzspain 发表于 2023-9-14 14:10

1024:勿cue

肆懿 发表于 2023-9-14 15:01

lzspain 发表于 2023-9-14 14:10
1024:勿cue

已经上不了了吧,好多年没上了找不到回家的路了

njit_77 发表于 2023-9-14 15:03

感谢分享知识

tp522022 发表于 2023-9-14 15:06

肆懿 发表于 2023-9-14 15:01
已经上不了了吧,好多年没上了找不到回家的路了

{:301_1001:}哈哈哈哈 那不是通天大道吗 一路畅通

lzspain 发表于 2023-9-14 16:00

肆懿 发表于 2023-9-14 15:01
已经上不了了吧,好多年没上了找不到回家的路了

说明你不是合格的老司机,我都上岸了

ztqddj007 发表于 2023-9-17 13:33

支持一波
页: [1]
查看完整版本: 【原创】基于时间认证的算法,用于两步验证