私钥加签和base64编码——Python

在实际接口传递信息过程中,时常会用到加密传输的操作,本文主要定义了私钥加签和base64编码格式,采用的是rsa2签名,待签名字符串需要先根据特定规则排序后再签名,需要注意提前配置好所需要的包,其次关于私钥有特定的格式要求,如果你都已经到签名这一步了,相信你已经获取到正确的私钥了,这里就不过多赘述。

from Crypto.Hash import SHA256
from Crypto.Signature import PKCS1_v1_5 as Sig_pk
from Crypto.PublicKey import RSA
import base64


def sign_str(parm):
    str_parm = ''
    for p in sorted(parm):
        # print(p)
        if p in ['sign','signType'] or not parm[p]:
            continue
        elif isinstance(parm[p], dict):
            str_parm += str(p) + "=" + "{" + sign_str(parm[p]) + "}" + "&"
        else:
            str_parm += str(p) + "=" + str(parm[p]) + "&"
    return str_parm[:-1]


def sign_by_private_key(sortData, private_key):
    """
    ras2签名
    """
    # 获取私钥
    key = base64.b64decode(private_key)

    rsakey = RSA.importKey(key)
    # 根据sha算法处理签名内容  (此处的hash算法不一定是sha,看开发)
    data = SHA256.new(sortData.encode())

    # 私钥进行签名
    sig_pk = Sig_pk.new(rsakey)
    signer = sig_pk.sign(data)
    # 将签名后的内容,转换为base64编码
    result = base64.b64encode(signer)
    # 签名结果转换成字符串
    data = result.decode()
    return data



  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值