hashlib python 加密框架

Posted 521world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashlib python 加密框架相关的知识,希望对你有一定的参考价值。

python3中digest()和hexdigest()区别

转自:https://www.cnblogs.com/yrxns/p/7727471.html

hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法接口,如SHA1、SHA224、SHA256、SHA384、SHA512、MD5等。

其中

hash.digest()
返回摘要,作为二进制数据字符串值

hash.hexdigest()
返回摘要,作为十六进制数据字符串值

举个例子

复制代码
import hashlib

md5 = 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 base64

md5 = hashlib.md5()

a = "张三13000000000431400甘肃省兰州市新洲区李集街道天水南路222号天猫超市天猫超市仓库02781739210430208甘肃省兰州市新洲区金口街旭光村菜鸟物流园3号库test0926001false230278880002901701602017-09-22 08:55:041pressureTestCHENGBANGPEISONG-0001NJCB-001CH1‘nextRouteId‘:890,‘nextRouteType‘:2,‘targerRdcType‘:2,‘targetRdcId‘:89048591619095CBWL2017-09-24 23:59:00108WLBydhtest1341573LP00079477100697ddhtest5454253SB-ZFB111619095晟邦湖北分拨中心MainWaybillAccess1619095MainWaybillAccesstest09260012017-09-22 09:13:11zpb_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方法导致加密的结果不正确

以上是关于hashlib python 加密框架的主要内容,如果未能解决你的问题,请参考以下文章

Python3 hashlib模块(加密)

python加密---hashlib模块

python—模块-hashlib加密

Python加密hashlib模块

加密hashlib模块

hashlib加密模块_python