python的加密与解密_加签与验签

22 篇文章 0 订阅
21 篇文章 0 订阅

在这里插入图片描述
在与第三方服务对接时,加密与解密,加签与验签是这个过程中的关键一步一般情况下,对接服务中会有两对公私钥。使用对方公钥进行加密,使用自己私钥进行加签。传回来的数据,使用自己的私钥解密,使用对方的公钥验签。

加密与解密

import base64
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA
from Crypto.Cipher import PKCS1_v1_5
from Crypto.Signature import PKCS1_v1_5 as SIGN_PKCS
  
PUB_KEY = RSA.importKey(open('rsa_public_key.pem','r').read())
PRI_KEY = RSA.importKey(open('rsa_private_key.pem','r').read())

加密代码:

def split_data(l, n):
    for i in range(0, len(l), n):
        yield l[i: i+n]
         
def encrypt(params):
    raw = params.encode('utf-8')
    cipher = PKCS1_v1_5.new(PUB_KEY)
    # 加密超长字节117个字节一加密
    content = b''.join([cipher.encrypt(x) for x in chunks(raw, 117)])
    return base64.b64encode(content)

解密代码:

def decrypt(data):
    raw = data.encode('utf-8')
    decrypt = PKCS1_v1_5.new(PRI_KEY).decrypt
    # 解密超长字符128一解密
    content = b''.join(decrypt(x, object()) for x in chunks(raw, 128))
    return content.decode()

加签与解签

加签代码:

def signer(data):
    signstr = data.encode('utf-8')
    sign = SIGN_PKCS.new(PRI_KEY).sign(SHA.new(signstr))
    return base64.b64encode(sign)

解签代码:

def verify_sign(unsign, raw_sign):
    """
     unsign: 签名
     raw_sign: 待验证签名
    """
    assert SIGN_PKCS.new(PUB_KEY).verify(SHA.new(unsign.encode('utf-8')), raw_sign)

如果您有什么想法,欢迎评论留言哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值