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
相關文章
相關標籤/搜索