zoukankan      html  css  js  c++  java
  • 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'x0cxc1uxb9xc0xf1xb6xa81xc3x99xe2iw&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':890}48591619095CBWL2017-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'(xb1xf9xd9xf4x90x90jN; ~x82)FF'
    16位md5加密结果再进行base64编码:KLH52fSQkGpOOwp+gilGRg==

    加密结果与java实现的加密结果一致

    注意:区分加密是hash.digest() 还是hash.hexdigest(),之前一直用的是hexdigest方法导致加密的结果不正确

  • 相关阅读:
    java导出pdf格式文档
    本地文件夹选择框
    将文件解除占用
    Windows 进入上帝模式窗口
    Windows 10 系统获取密钥方法
    CentOS7 systemctl 命令
    一键立即息屏
    定时关闭程序
    CentOS 7 FTP的安装与配置
    SQL基础
  • 原文地址:https://www.cnblogs.com/521world/p/11407983.html
Copyright © 2011-2022 走看看