python的md5
Python之Md5()使用
Md5()
功能:MD5签名是一个哈希函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示);可用于文件命名
传入参数:bytes类型
导入:from hashlib import md5
例子1:
import requests
from hashlib import md5
url = "http://p3-tt.bytecdn.cn/list/pgc-image/cd7367fde2454137b2874f62dba5c43f"
md5_url = md5(url.encode('utf8')).hexdigest()
print(md5_url) # 2f7108ac307fd06f5995948f35a70f2fresponse = requests.get(url)
md5_content = md5(response.content).hexdigest()
print(md5_content) # bf93cde0b6edb50b9e95106c11fdd5ad
例子2:
from hashlib import md5
chinese = '你好呀'
md5_chinese = md5(chinese.encode('utf8')).hexdigest()
print(md5_chinese) # 4f65fdb33e0f2bd0de6bd1b41fdea968
例子3:
from hashlib import md5
english = 'd8hgeo-2d73k0s2'
md5_str = md5(english.encode('utf8')).hexdigest()
print(md5_str) # 74335cc0ff464e7006d1530260385a52
原文链接:https://blog.csdn.net/weixin_43411585/article/details/88863222
python3中digest()和hexdigest()区别
hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法接口,如SHA1、SHA224、SHA256、SHA384、SHA512、MD5等。
其中
hash.digest() 返回摘要,作为二进制数据字符串值
hash.hexdigest() 返回摘要,作为十六进制数据字符串值
举个例子
import hashlibmd5 = hashlib.md5()
md5.update("a".encode('utf-8'))
print(u"digest返回的摘要:%s"% md5.digest())
print(u"hexdigest返回的摘要:%s"% md5.hexdigest())
结果
digest返回的摘要:b'\x0c\xc1u\xb9\xc0\xf1\xb6\xa81\xc3\x99\xe2iw&a'
hexdigest返回的摘要:0cc175b9c0f1b6a831c399e269772661
众配宝接口的加密规则是java实现的,转换成python
加密规则:1.请求报文 2.替换请求报文中的字符串(replace("\>\s+\<", “><”)) 3.替换后的字符串+key(‘alogalog’)
4.第3步获取的字符串md5加密 5.将加密后的字符串base64编码
python实现加密
import hashlib
import base64md5 = hashlib.md5()a = "张三 13000000000 431400 甘肃省 兰州市 新洲区 李集街道 天水南路222号 天猫超市 天猫超市仓库 02781739210 430208 甘肃省 兰州市 新洲区 金口街旭光村菜鸟物流园3号库 test0926001 false 2302 7888000 290 170 160 2017-09-22 08:55:04 1 pressureTest CHENGBANGPEISONG-0001 NJCB-001 C H1 {'nextRouteId':890,'nextRouteType':2,'targerRdcType':2,'targetRdcId':890} 4859 1619095 CBWL 2017-09-24 23:59:00 108 WLB ydhtest1341573 LP00079477100697 ddhtest5454253 SB-ZFB 1 1 1619095 晟邦湖北分拨中心 MainWaybillAccess 1619095 MainWaybillAccesstest09260012017-09-22 09:13:11 zpb_chuyan_cb "
b = a.replace("\\>\\s+\\<", "><")+"alogalog"md5.update(b.encode('utf-8'))
b = md5.digest()
print(u"16位md5加密结果:%s"% b)
print(u"16位md5加密结果再进行base64编码:%s" % base64.b64encode(b).decode('utf-8')
)
结果
16位md5加密结果:b'(\xb1\xf9\xd9\xf4\x90\x90jN;\n~\x82)FF'
16位md5加密结果再进行base64编码:KLH52fSQkGpOOwp+gilGRg==加密结果与java实现的加密结果一致
注意:区分加密是hash.digest() 还是hash.hexdigest(),之前一直用的是hexdigest方法导致加密的结果不正确
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
