python3实现md5加密

…衆ロ難τιáo~ 提交于 2019-12-15 10:33:49

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))
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!