Googleデュアルファクタ認証pythonの最高の実装


このバージョンは最良の実装であるべきで、この上に4つの時点を増やして、in方式で判断して間違いを避けることができます.
@コードの注釈は実は最も良い説明です
class _GoogleTwoSetpAuth(object):
    '''Google        '''

    def _get_hotp_token(self, secret, intervals_no):
        '''  htop_token        
        :param secret         
        :param 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(self, secret):
        '''  totop
        :param secret         ,       
        '''

        #     
        t     = time.time()
        t_30  = t + 30
        t_30_ = t -30
        t_60  = t - 60

        # 90s    ,               ,         
        oold = self._get_hotp_token(secret, intervals_no=int(t_60) // 30)
        old = self._get_hotp_token(secret, intervals_no=int(t_30_)//30)
        now = self._get_hotp_token(secret, intervals_no=int(t)//30)
        new = self._get_hotp_token(secret, intervals_no=int(t_30)//30)
        return oold, old, now, new

    def shutff_str(self):
        '''         16 '''
        src = "abcdefghijklmnopqrstuvwxyz".upper()
        secret= "".join(random.sample(src,16)).replace(' ','')
        return secret