Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)


Posted in Python onDecember 04, 2019

环境:

Python3.7

依赖库:

import datetime
import random
import requests
import hashlib
import json
import base64
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
from Crypto.Cipher import AES

加签:

def sign(signflag,keypath,baseRequest):
 #http请求body
  print(baseRequest)
  #加签标志
  if not signflag: return baseRequest
  else:
   #取请求体中的业务数据
    businessdata = json.dumps(baseRequest["data"])
    #读取私钥(.key格式,可使用openssl或java.keytools产生)
    with open(keypath,'r') as rsaKeyFile:
      rsaKey = rsaKeyFile.read().replace("\n",'')
      print(rsaKey)
    rsaKeyBytes = base64.b64decode(rsaKey)
    print(rsaKeyBytes)
    #SHA256摘要,RSA加密
    priKey = RSA.importKey(rsaKeyBytes)
    signer = PKCS1_v1_5.new(priKey)
    hash_obj = SHA256.new(business_data.encode('utf-8'))
    signature = base64.b64encode(signer.sign(hash_obj))
    print(signature)
    #把签名加进请求体并返回
    baseRequest['sign'] = signature.decode()
    print(baseRequest)
    return baseRequest

验签:

def validata(signflag,cerpath,res):
  if not signflag: return res
  else:
   #取业务数据和签名
    data = res['data']
    sign = res['sign']
    #此处cer已转换成pem格式,使用openssl工具
    #openssl x509 -inform der -pubkey -noout -in xxxxx.cer>xxxxx.pem
    cert = open(cerpath).read().replace("-----BEGIN PUBLIC KEY-----\n","").replace("-----END PUBLIC KEY-----\n","").replace("\n","")
    print(cert)
 #验签逻辑同加签
    pubBytes = base64.b64decode(cert)
    pubKey = RSA.importKey(pubBytes)
    signer = SHA256.new(json.dumps(data).encode("utf-8"))
    verifier = PKCS1_v1_5.new(pubKey)
    return verifier.verify(signer,base64.b64decode(sign))

总结

以上所述是小编给大家介绍的Python3.7基于hashlib和Crypto实现加签验签功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
简单的Python的curses库使用教程
Apr 11 Python
Python读取网页内容的方法
Jul 30 Python
python实现按行切分文本文件的方法
Apr 18 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
python按行读取文件,去掉每行的换行符\n的实例
Apr 19 Python
python爬虫实例详解
Jun 19 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
详解python之heapq模块及排序操作
Apr 04 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
Python读取分割压缩TXT文本文件实例
Feb 14 Python
Python unittest单元测试框架及断言方法
Apr 15 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
Python绘制二维曲线的日常应用详解
Dec 04 #Python
使用python远程操作linux过程解析
Dec 04 #Python
基于Python检测动态物体颜色过程解析
Dec 04 #Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 #Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 #Python
python 画函数曲线示例
Dec 04 #Python
python二元表达式用法
Dec 04 #Python
You might like
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
用jscript启动sqlserver
2007/06/21 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
在Python的Django框架中加载模版的方法
2015/07/16 Python
django 常用orm操作详解
2017/09/13 Python
人机交互程序 python实现人机对话
2017/11/14 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
汇科协同Java笔试题
2012/03/31 面试题
节电标语大全
2014/06/23 职场文书
2014年安全工作总结范文
2014/11/13 职场文书