068 hashlib模块

hashlid模块

  • hash是一种算法,该算法接受传入的内容,通过运算获得一串hash值。
  • hash值的特色:
    1. 只要传入的内容同样,获得的hash值同样,可用于非明文密码传输时密码校验
    2. 不能由hash值返解成内容,便可以保证非明文密码的安全性
    3. 只要使用的hash算法不变,不管校验的内容有多大,获得的hash值长度是固定的,能够用于对文本的哈希处理
  • hash算法其实能够当作以下图所示的一座工厂,工厂接收你送来的原材料,通过加工返回的产品就是hash值
import hashlib # 导入hashild模块

m = hashlib.md5()  # 固定的写法
m.update(b'123456')
m.update(b'456')

print(m.hexdigest())
# 123 456 --》 e10adc3949ba59abbe56e057f20f883e
# 123456 --》 e10adc3949ba59abbe56e057f20f883e

1. 变成固定的字符串
2. 相同的字符串哈希后结果同样
3. 叠加性
  • 破解hash加密python

    hash加密算法虽然看起来很厉害,可是他是存在必定缺陷的,便可以经过撞库能够反解,以下代码所示。算法

    import hashlib
    
    # 假定咱们知道hash的微信会设置以下几个密码
    pwd_list = [
        'hash3714',
        'hash1313',
        'hash94139413',
        'hash123456',
        '123456hash',
        'h123ash',
    ]
    
    def make_pwd_dic(pwd_list):
        dic = {}
        for pwd in pwd_list:
            m = hashlib.md5()
            m.update(pwd.encode('utf-8'))
            dic[pwd] = m.hexdigest()
        return dic
    
    def break_code(hash_pwd, pwd_dic):
        for k, v in pwd_dic.items():
            if v == hash_pwd:
                print('hash的微信的密码是===>%s' % k)
    
    hash_pwd = '0562b36c3c5a3925dbe3c4d32a4f2ba2'
    break_code(hash_pwd, make_pwd_dic(pwd_list))
    
    
    # hash的微信的密码是===>hash123456
相关文章
相关标签/搜索