Python3.6.1 RSA 公钥pubkey分段加密

本文介绍了如何使用Python3.6.1进行RSA公钥加密,特别是针对不同长度的字段进行分段加密的方法。当公钥位数为1024 bit时,最大加密长度为117个字符;2048 bit时,最大长度为245个字符。通过分块加密,可以处理任意长度的字符串。文中提供了一个具体的加密脚本实例,并展示了运行结果。RSA加密的输出每次都会不同,但能正确解密回原始字符串。
摘要由CSDN通过智能技术生成

前段时间,遇到有接口是使用rsa公钥加密方法实现的,于是需要编写rsa 加密的脚本。其中 ,公钥(publickey)是已知的。不同长度的字段使用RSA加密出来的长度不一样。
加密的字段长短规则如下:
加密的 plaintext 最大长度是 证书key位数/8 - 11, 例如1024 bit的证书,被加密的串最长 1024/8 - 11=117,
那么对于 2048bit的证书,被加密的长度最长2048/8 - 11 =245,
解决办法是 分块 加密,然后分块解密就行了,
因为 证书key固定的情况下,加密出来的串长度是固定的。
也就是说,如果使用2048bit的证书,并且被加密的字符段是小于245个,那么被加密出来的字符长度是344个,以此类推,被加密的字符串可以是688个,1032个等。

以下是针对某个接口的传参使用rsa加密技术后,对该接口进行的测试,脚本如下:

#coding=utf-8
import re
import json
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
from Crypto.PublicKey import RSA
import base64
import requests
from base64 import b64encode, b64decode
import rsa

#单次加密串的长度最大为 (key_size/8)-11
'''
加密的 plaintext 最大长度是 证书key位数/8 - 11, 例如1024 bit的证书,被加密的串最长 1024/8 - 11=117, 
那么对于 2048bit的证书,被加密的长度最长2048/8 - 11 =245,
解决办法是 分块 加密&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值