python生成RSA签名

Posted 快乐的平头哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python生成RSA签名相关的知识,希望对你有一定的参考价值。

# -*- coding: utf-8 -*-
# Auth :yuyu

# pip install -i https://pypi.douban.com/simple/ pycryptodome
from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
import base64
import os

\'\'\'不分段\'\'\'
def get_sgin(out_trade_no=None,type=None,price=None,pay_password=None,phone=None,public_data=None):

    if out_trade_no:
        msg = "out_trade_no={}&price={}&pay_password={}".format(out_trade_no, price, pay_password)
    else:
        msg = "type={}&info=2&phone={}&app_id=com.jiutongfuwu.wantcashier".format(type, phone)
    # 读取文件中的公钥
    key = open(public_data).read()  #文件的公钥
    publickey = RSA.importKey(key)
    # 进行加密
    pk = PKCS1_v1_5.new(publickey)
    encrypt_text = pk.encrypt(msg.encode())
    # 加密通过base64进行编码
    result = base64.b64encode(encrypt_text)
    result = str(result, encoding="utf-8")  # byte类型转换为str
    return result

# if __name__ == \'__main__\':
#     public_data =\'public.pem\'
#     res =get_sgin(type=1,public_data =public_data)
#     print(res)

\'\'\'分段\'\'\'
def join_sgin(data,public_data): # data 是参数
    key =open(public_data).read()
    publickey =RSA.importKey(key)
    #分段
    pk = PKCS1_v1_5.new(publickey)
    encrypt_text =[]

    for i in range(0,len(data),100):
        context = data[i,i+100]
        encrypt_text.append(pk.encrypt(context.encode()))
        cipher_text = b\'\'.join(encrypt_text)
        #加密通过base64
        result = base64.b64encode(cipher_text)
        result =str(result,encoding= \'utf-8\')
        return result

 

以上是关于python生成RSA签名的主要内容,如果未能解决你的问题,请参考以下文章

python实现RSA加密和签名以及分段加解密的方案

python RSA 加密与签名

接口数据使用了 RSA 加密和签名?一篇文章带你搞定

python实现RSA2签名

使用 mbedtls 生成的 RSA 签名,无法使用 C# (bouncycastle) 应用程序进行验证

如何使用 RSA256 算法生成 JWT 签名?