hashlib模块
加密算法
hash:一种算法 ,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
三个特点:
1.内容相同则hash运算结果相同,内容稍微改变则hash值则变
2.不可逆推
3.相同算法:无论校验多长的数据,得到的哈希值长度固定。
MD5算法
1 import hashlib 2 m=hashlib.md5() 3 m.update('sdfasdfas'.encode('utf-8')) #将字符串加密 4 print (m.hexdigest()) #查看加密结果 5 711613d7c7b6fa6952320096dcae8ee7
校验文件
1 m=hashlib.md5() 2 with open(r'E:\python\day1\day5\a.test','rb') as f: 3 for i in f: 4 m.update(i) #将每一行校验 5 num = m.hexdigest() 6 print (num) 7 ac07f92906e14131c584e7303bcf236c
sha256算法
1 import hashlib 2 3 # ######## 256 ######## 4 5 hash = hashlib.sha256('898oaFs09f'.encode('utf8')) 6 hash.update('alvin'.encode('utf8')) ##密码加严 7 print (hash.hexdigest())#e79e68f070cdedcfe63eaf1a2e92c83b4cfb1b5c6bc452d214c1b7e77cdfd1c7
python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密:
1 import hmac 2 h = hmac.new('alvin'.encode('utf8')) ##密码加严 3 h.update('hello'.encode('utf8')) 4 print (h.hexdigest())#320df9832eab4c038b6c1d7ed73a5940
撞库
1 import hashlib 2 passwds=[ 3 'alex3714', 4 'alex1313', 5 'alex94139413', 6 'alex123456', 7 '123456alex', 8 'a123lex', 9 ] 10 def make_passwd_dic(passwds): 11 dic={} 12 for passwd in passwds: 13 m=hashlib.md5() 14 m.update(passwd.encode('utf-8')) 15 dic[passwd]=m.hexdigest() 16 return dic 17 18 def break_code(cryptograph,passwd_dic): 19 for k,v in passwd_dic.items(): 20 if v == cryptograph: 21 print('密码是===>\033[46m%s\033[0m' %k) 22 23 cryptograph='aee949757a2e698417463d47acac93df' 24 break_code(cryptograph,make_passwd_dic(passwds)) 25 26 模拟撞库破解密码

浙公网安备 33010602011771号