MD5
全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5
是一种不可逆算法。有很高的安全性。他对于任何字符串都可以加密成一段唯一的固定长度的代码。SHA1
全称是Secure Hash Algorithm(安全哈希算法)。SHA1
基于MD5
,加密后数据长度更长,对于长度小于264的输入,产生长度为160 bit 的散列值。比MD5
多32位。SHA1
比MD5
更加安全,但是SHA1
的运算速度就比MD5
要慢。hashlib
模块就包括了 md5
和 sha1
算法。# -*- coding:utf-8 -*-
import hashlib
data = "This a md5 test!"
hash_md5 = hashlib.md5(data.encode("utf8"))
result = hash_md5.hexdigest()
print(result)
# 代码运行结果:
"""
fdedaafb043d41ff06b6ef249ef53be9
"""
MD5
不仅仅是上面这个例子这样用来处理字符串,还有更广泛的用途:
MD5
值作为文件名。(MD5
可以保证唯一性)MD5
值作为key。MD5
值,就是用来检测文件是否被篡改)# -*- coding:utf-8 -*-
import hashlib
data = "This a md5 test!"
hash_md5 = hashlib.sha1(data.encode("utf8"))
result = hash_md5.hexdigest()
print(result)
# 代码运行结果:
"""
37570c907ee872bbd039042d678bb0d84040d15a
"""
import hashlib
# 用于判断两个文件是否相同,计算文件的md5,如果MD5值一样,则比较文件中的每个字符。
def calc_file_md5(filename):
"""
计算文件 md5值
:param filename : str 文件名
:return: str md5加密的值
"""
md5 = hashlib.md5()
# path 文件路径
path = ""
with open(path, 'rb') as file:
while True:
data = file.read(8096)
if not data:
break
md5.update(data) # update添加时会进行计算
return md5.hexdigest()