python实现RSA加密的sign签名

代码实现如下:

import time
from Cryptodome.PublicKey import RSA
from Cryptodome.Signature import pkcs1_15
from Cryptodome.Hash import SHA256
from base64 import b64encode
import uuid
import csv

privatekey = "这里存放研发生成的私钥"
private_key = "-----BEGIN RSA PRIVATE KEY-----\n" + privatekey + "\n-----END RSA PRIVATE KEY-----"

timestamp = str(int(time.time()))  # 生成的时间戳
nonce = uuid.uuid4().hex   # 生成的随机数

# 读取本地的csv文件
with open('D:\Python\person.csv', 'r', encoding='utf-8') as file_obj:
    # 1.创建reader对象
    reader = csv.reader(file_obj)
    # 2.遍历进行读取数据
    for r in reader:
        # 设置为入参
        calltype = r[0]
        versionCode = r[1]

# 字符串拼接
def GetSignData(terminal, versionCode):
    stringA = ""
    stringA = str("callerType=" + terminal + "&nonce=" + nonce + "&timestamp=" + timestamp + "&version=" + versionCode)
    return stringA


# 生成sign
def sign(signData):
    rsa_key = RSA.importKey(private_key)
    signer = pkcs1_15.new(rsa_key)
    digest = SHA256.new(signData.encode('utf8'))
    sign = b64encode(signer.sign(digest)).decode('utf8')
    return sign



#调用GetSignData函数,获取参与签名的参数,返回新的字典数据
signData=GetSignData(calltype, versionCode)
#调用函数,返回需要加密的字符串
#print('拼接的字符串:'+ signData)
#调用函数,返回生辰的sign
print('生成的sign:'+ sign(signData))

执行结果
在这里插入图片描述
过程出现的问题:因为多加了+ ‘\n’,导致生成的sign不对,去掉之后,就对了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43466526/article/details/125718369
今日推荐