MD5讯息摘要算法(MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位的散列值(hash value),用于确保信息传输完整一致。MD5的前身有MD2、MD3、MD4。

MD5功能,输入任意长度的信息,经过处理,输出为128位的信息(数字指纹)。

md5算法特点:

1。压缩性:任意长度的数据,算出的md5数值是固定的

2。容易计算:从原数据转换成md5值很容易

3。抗修改性:对原数据进行任何改动,md5值会发生改变

4。强抗碰撞,已知原数据和md5,想找一个相同md5值的数据很难的

>>> import hashlib
>>> 
>>> m = hashlib.md5()
>>> 
>>> m.update("hello world")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Unicode-objects must be encoded before hashing
>>> m.update(b"hello world") #必须为字节类型
>>> print(m.hexdigest())
5eb63bbbe01eeed093cb22bb8f5acdc3  #16进制hash值
>>> m.update("你好世界".encode("utf-8")) #追加内容
>>> 
>>> print(m.hexdigest())
ae8824a8c72230e74a6e8b0a1186a4fb #观察完整输出是否和这个值一样?
>>> 
>>> m1 = hashlib.md5()
>>> 
>>> m1.update("hello world你好世界".encode("utf-8")) #拼接完整输出
>>> print(m1.hexdigest())
ae8824a8c72230e74a6e8b0a1186a4fb #值一样
#不用update的写法
>>> import hashlib
>>> 
>>> 
>>> a = hashlib.md5(b"hello world")
>>> a.hexdigest()
'5eb63bbbe01eeed093cb22bb8f5acdc3'

SHA-1 安全hash算法(Secure Hash Algorithm)主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2^64的消息,SHA会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。

SHA是美国国家安全局设计的,由美国国家标准和技术研究院发布的一些列密码散列函数。由于MD5和SHA-1在2005年被破解了,科学家们又推出了SHA224,SHA256,SHA384,SHA512,位数越长,破解难度越大,但同时生成加密的消息摘要耗时也更长,目前最流行的加密算法是SHA-256。

>>> import hashlib
>>> 
>>> a = hashlib.sha
hashlib.sha1(       hashlib.sha384(     hashlib.sha3_384(   hashlib.shake_128(  
hashlib.sha224(     hashlib.sha3_224(   hashlib.sha3_512(   hashlib.shake_256(  
hashlib.sha256(     hashlib.sha3_256(   hashlib.sha512(     
>>> a = hashlib.sha1(b"hello world")
>>> print(a.hexdigest())
2aae6c35c94fcfb415dbe95f408b9ce91ee846ed #160位消息摘要
Categories: python

0 Comments

发表评论

Avatar placeholder

邮箱地址不会被公开。 必填项已用*标注