hashlib模块

python中的hashlib模块中提供了许多摘要算法,比较常用的例如:md5,sha1等.

什么是摘要算法呢?

摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文.

那么md5,sha1是什么呢?

md5算法:MD5的全称是Message-Digest Algorithm 5,它是基于Hash变换而来的,MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数.

具体使用方法:

import hashlib
hash_1 = hash.md5()
hash_1.update(str.encode('utf-8'))
hash_obj = hash_obj.hexdigest
print(hash_obj)

打印的结果就是我们在updata中传入的字符串(str)md5算法得到摘要结果.

sha1算法:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA).对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要.当接收到消息的时候,这个消息摘要可以用来验证数据的完整性.在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要.SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略).

具体使用方法(和md5类似):

import hashlib
hash_1 = hash.sha1()
hash_1.update(str.encode('utf-8'))
hash_obj = hash_obj.hexdigest
print(hash_obj)

当然在hashlib模块中不止md5和sha1算法,其中包含了很多算法,有的算法的摘要效率高,有的算法的安全性能高,具体要用到什么算法,要看有什么需求.

具体有什么用途呢?

当我们的密码等需要保护的隐私信息,我们可以通过这些算法,将信息保护起来(因为这些算法的不可逆性,所以不用担心他们直接破解我们密码.).

当然信息不可能绝对的安全,有些不怀好意的可能将一些常用的密码的md5/sha1值存放起来,然后进行反向匹配,来找到密码,所以这告诉我们不要使用过于简单密码(123456,11111,22222)等.

https://www.cmd5.com 这是一个在线破解md5的网站(其实不算破解,这叫在数据库中匹配),有兴趣可以去试试!

原文地址:https://www.cnblogs.com/qizt/p/10035170.html