一、定义
hash:一种算法 ,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
三个特点:
1.内容相同则hash运算结果相同,内容稍微改变则hash值则变
2.不可逆推
3.相同算法:无论校验多长的数据,得到的哈希值长度固定。
二、实例
import hashlib m=hashlib.md5()# m=hashlib.sha256() m.update('hello'.encode('utf8')) print(m.hexdigest()) #5d41402abc4b2a76b9719d911017c592 m.update('alvin'.encode('utf8')) print(m.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af m2=hashlib.md5() m2.update('helloalvin'.encode('utf8')) print(m2.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af ''' 注意:把一段很长的数据update多次,与一次update这段长数据,得到的结果一样 但是update多次为校验大文件提供了可能。 '''
import hashlib #使用MD5加密 # m=hashlib.md5() # m.update('hello'.encode('utf-8')) # m.update('world'.encode('utf-8')) # print(m.hexdigest()) # # # m=hashlib.md5() # m.update('helloworld'.encode('utf-8')) # print(m.hexdigest()) # # m=hashlib.md5('helloworld'.encode('utf-8')) # print(m.hexdigest()) # # # m=hashlib.md5('h'.encode('utf-8')) # m.update('elloworld'.encode('utf-8')) # print(m.hexdigest()) # m=hashlib.md5() # with open('a.xml','rb') as f: # for line in f: # m.update(line) # print(m.hexdigest()) # # # #耗费内存不推荐使用 # m=hashlib.md5() # with open('a.xml','rb') as f: # m.update(f.read()) # print(m.hexdigest()) #加盐 # password='alex3714' # m=hashlib.md5('yihangbailushangqingtian'.encode('utf-8')) # m.update(password.encode('utf-8')) # # passwd_md5=m.hexdigest() # # print(passwd_md5) #一种加密方法但可以加前置东西进行加密 import hmac h=hmac.new('hello'.encode('utf-8')) h.update('world'.encode('utf-8')) print(h.hexdigest()) h=hmac.new('hello'.encode('utf-8')) h.update('w'.encode('utf-8')) h.update('or'.encode('utf-8')) h.update('ld'.encode('utf-8')) print(h.hexdigest())