python-hash和md5算法
一、HASH
HASH——‘哈希’,输入任意长度的值,生成固定长度的散列值。
注意:hash所生成的值在python程序本次运算时一直,下次程序运算时会生成另一个hash值。
二、MD5
MD5信息摘要算法
2.1功能:
1、输入任意长度,经过算法,输出128位固定长度的值(数字指纹)。
2、不同的输入,得到不同的结果(唯一性)
2.2特点:
1、压缩性:输入任意,MD5值长度固定
2、容易计算:原始数据很容易就能算出MD5的值。
3、抗修改:修改了一点点,所算出MD5值差别很大。
4、强碰撞:已知一个MD5值,想通过另一个值算出相同的值很难。
2.3是否可逆?
MD5是基于hash算法,在计算过程中原文数据就丢失了,所以不可逆。
2.4有什么用途?
1.防止被篡改
2.防止看到明文
3.数字签名
# @File : 4.10.hash加密算法.py # @Software: PyCharm import hashlib # 1.将字符串,通过加密算法,变成固定长度的输出 s = 'abc' print(len(str(hash(s)))*4, hash(s)) # 2.生成md5数字指纹。 # 第1种写法: s2 = b'!@abc' # 定义字节型字符串 md = hashlib.md5() # 导入md5算法 md.update(s2) # 把值传给md5算法 print(md.digest()) # 生成一个128位的2进制数 print('MD5', '长度:', len(md.hexdigest())*4, md.hexdigest()) # 第2种写法: print(hashlib.md5("!@abc".encode("utf-8")).hexdigest()) # 3.SHA-1 hash = hashlib.sha1() hash.update('admin'.encode('utf-8')) print('SHA-1', '长度:', len(hash.hexdigest())*4, hash.hexdigest()) # 4.SHA-256 hash = hashlib.sha256() hash.update('admin'.encode('utf-8')) print('SHA-256', '长度:', len(hash.hexdigest())*4, hash.hexdigest()) # 5.SHA-384 hash = hashlib.sha384() hash.update('admin'.encode('utf-8')) print('SHA-384', '长度:', len(hash.hexdigest())*4, hash.hexdigest()) # 5.SHA-512 hash = hashlib.sha512() hash.update('admin'.encode('utf-8')) print('SHA-384', '长度:', len(hash.hexdigest())*4, hash.hexdigest())