hashlidモジュール
- 得られたハッシュ値列を計算した後、着信コンテンツを受け入れるハッシュアルゴリズム。
- ハッシュ値の機能:
- 限り着信コンテンツとして、クリアテキストのパスワードとして得られたハッシュ値は、非暗号化チェックサムを輸送するために使用することができます
- ソリューションは、非平文パスワードのセキュリティを保証することができ、コンテンツにハッシュ値で返すことはできません
- 限り、同一のハッシュアルゴリズムが使用されるようにかかわらず、検証の方法コンテンツの、得られた固定長のハッシュ値はテキスト・ハッシングで使用することができます
- あなたが送信された原材料を受け、工場に下記のように実際には、ハッシュアルゴリズムは、返品された製品は、ハッシュ値で処理し、表示することができます
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. 叠加性
暗号化ハッシュをクラック
ハッシュ暗号化アルゴリズムは非常に強力に見えるかもしれませんが、彼は、ライブラリの逆ソリューション、図に示した次のコードで打つことができ、特定の欠陥、です。
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