Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2020-02-13 13:00
676 查看
环境:
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实现加签验签功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
您可能感兴趣的文章:
- Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
- Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
- python3安装crypto出错及解决方法
- 下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
- Python基于pycrypto实现的AES加密和解密算法示例
- python的Crypto模块实现AES加密实例代码
- python3.6 实现AES加密的示例(pyCryptodome)
- python Crypto模块的安装与使用方法
- windows下python安装paramiko模块和pycrypto模块(简单三步)
- Python使用PyCrypto实现AES加密功能示例
- Python使用Pycrypto库进行RSA加密的方法详解
- 在Python中使用M2Crypto模块实现AES加密的教程
- python加密解密库cryptography使用openSSL生成的密匙加密解密
相关文章推荐
- python基于FTP实现文件传输相关功能代码实例
- 基于 Immutable.js 实现撤销重做功能的实例代码
- 基于Django框架利用Ajax实现点赞功能实例代码
- Python实现微信消息防撤回功能的实例代码
- python基于json文件实现的gearman任务自动重启代码实例
- 基于python2.7实现图形密码生成器的实例代码
- Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
- python django 实现验证码的功能实例代码
- Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
- 基于JS实现checkbox全选功能实例代码
- 基于php&mysql实现聊天室功能的代码实例分享
- python+selenium实现自动抢票功能实例代码
- python基于gevent实现并发下载器代码实例
- 基于Python实现的扫雷游戏实例代码
- 基于Python实现的扫雷游戏实例代码
- 基于jQuery实现仿51job城市选择功能实例代码
- Python使用sftp实现上传和下载功能(实例代码)
- 通过python3实现投票功能代码实例
- 基于python实现蓝牙通信代码实例
- 基于php&mysql实现聊天室功能的代码实例分享