1 MD5简介
MD5消息摘要算法(MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。
使用python3 的hashlib库,hash加密算法(比如:SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等)包括在内。
hashlib库的官方文档介绍:https://docs.python.org/3/library/hashlib.html?highlight=hashlib#credits
2 md5()加密算法
>>>import hashlib
>>>text=“待加密信息”
>>>md=hashlib.md5()#创建md5对象
>>>md.update(text.encode(encoding="utf-8"))
>>>text_md5=md.hexdigest()#md5加密后
3 加密对象
1) 字符串的MD5
>>>str_md5 = hashlib.md5(str).hexdigest()
2) 文件的MD5
>>>file= open("file","rb")
>>>file_md5 = hashlib.md5(file.read()).hexdigest()
>>> file.close()
3) 封装成函数
def GetMd5(text):
myhash = hashlib.md5()
myhash.update(text.encode("utf-8"))
return myhash.hexdigest()
4 md5的应用场景
- 一致性验证
- 数字证书
- 安全访问认证
- 用户登陆网站的用户名和口令密码,对口令密码进行md5加密后存储口令密码的摘要信息;
5 测试场景
使用私钥+uri+时间生成唯一MD5的例子
/usr/bin/evn python
-*- coding: utf-8 -*-
import hashlib
import time
def GetMd5(text):
myhash = hashlib.md5()
myhash.update(text.encode("utf-8"))
return myhash.hexdigest()
deadline = str(hex(int(time.time())+1000))#获取早于当前时间的16进制值,用于校验业务是否过期
key = "1111111111111111111111111111"
uri = "/a/a.tml"
deadline = deadline[2:]#python 切片去除16进制的0x
text = key + uri + deadline
sign = GetMd5(text)
print(deadline)
print(sign)
print("curl -v -H \"host:testdomain.com\" \"http://localhost:80%s?&t=%s&sign=%s\""%(uri,deadline,sign))
来源:CSDN
作者:QA的自我修养
链接:https://blog.csdn.net/ccccsy99/article/details/103497620