keystream.py 文件源码

python
阅读 30 收藏 0 点赞 0 评论 0

项目:whatsapp-rest-webservice 作者: svub 项目源码 文件源码
def pbkdf2( password, salt, itercount, keylen, hashfn = hashlib.sha1 ):
        def pbkdf2_F( h, salt, itercount, blocknum ):
            def prf( h, data ):
                hm = h.copy()
                try:
                    hm.update(bytearray(data))
                except TypeError: #python 3 support
                    hm.update(bytes(data))

                d = hm.digest()
                return bytearray(d)

            U = prf( h, salt + pack('>i',blocknum ) )
            T = U

            for i in range(2, itercount + 1):
                U = prf( h, U )
                T = starmap(xor, zip(T, U))
            return T

        digest_size = hashfn().digest_size
        l = int(keylen / digest_size)
        if keylen % digest_size != 0:
            l += 1

        h = hmac.new(bytes(password), None, hashfn )

        T = bytearray()
        for i in range(1, l+1):
            tmp = pbkdf2_F( h, salt, itercount, i )
            T.extend(tmp)

        return T[0: keylen]
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号