python的md5和sha1加密
程序员文章站
2024-03-20 09:50:22
...
python的md5和sha1加密
1. 介绍
1.1 MD5
-
MD5
全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5
是一种不可逆算法。有很高的安全性。他对于任何字符串都可以加密成一段唯一的固定长度的代码。
1.2 SHA1
-
SHA1
全称是Secure Hash Algorithm(安全哈希算法)。SHA1
基于MD5
,加密后数据长度更长,对于长度小于264的输入,产生长度为160 bit 的散列值。比MD5
多32位。 - 因此,
SHA1
比MD5
更加安全,但是SHA1
的运算速度就比MD5
要慢。
2. Python中的用法
- Python 内置的
hashlib
模块就包括了md5
和sha1
算法。
2.1 MD5
# -*- 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
可以保证唯一性) - key-value数据库中使用
MD5
值作为key。 - 比较两个文件是否相同。(大家在下载一些资源的时候,就会发现网站提供了
MD5
值,就是用来检测文件是否被篡改)
2.2 SHA1
# -*- coding:utf-8 -*-
import hashlib
data = "This a md5 test!"
hash_md5 = hashlib.sha1(data.encode("utf8"))
result = hash_md5.hexdigest()
print(result)
# 代码运行结果:
"""
37570c907ee872bbd039042d678bb0d84040d15a
"""
2.3 处理大文件
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()
上一篇: POJ - 3468(线段树+lazy标记 区间更新 区间查询)
下一篇: 二分的变体思维