美文网首页
hmac-md5加密防破解

hmac-md5加密防破解

作者: huashen_9126 | 来源:发表于2020-04-18 21:04 被阅读0次

    普通md5加密,容易被破解,如:

    import hashlib
    
    print(hashlib.md5(b'123456').hexdigest())
    

    的结果在https://pmd5.com/
    上可以被轻易破解出来

    增加一个salt来使得相同的输入也能得到不同的哈希,这样,大大增加了黑客破解的难度。如果salt是我们自己随机生成的,通常我们计算MD5时采用md5(message + salt)。
    hmac模块实现了标准的Hmac算法

    import hmac, random
    
    def hmac_md5(key, s):
        return hmac.new(key.encode('utf-8'), s.encode('utf-8'), 'MD5').hexdigest()
    
    class User(object):
        def __init__(self, username, password):
            self.username = username
            self.key = ''.join([chr(random.randint(48, 122)) for i in range(20)])
            self.password = hmac_md5(self.key, password)
    
    db = {
        'michael': User('michael', '123456'),
        'bob': User('bob', 'abc999'),
        'alice': User('alice', 'alice2008')
    }
    
    def login(username, password):
        user = db[username]
        return user.password == hmac_md5(user.key, password)
    
    assert login('michael', '123456')
    assert login('bob', 'abc999')
    assert login('alice', 'alice2008')
    assert not login('michael', '1234567')
    assert not login('bob', '123456')
    assert not login('alice', 'Alice2008')
    print('ok')
    

    相关文章

      网友评论

          本文标题:hmac-md5加密防破解

          本文链接:https://www.haomeiwen.com/subject/rehavhtx.html