python RSA加解密

本文介绍了在Python中使用M2Crypto库进行RSA加密时遇到的数据大小限制问题。由于1024位密钥限制,当加密数据超过117字节时,会抛出RSA.RSAError: data too large for key size错误。文章提供了解决此问题的方法,允许对长数据进行分段加密,以满足加密需求。
摘要由CSDN通过智能技术生成

M2Crypto库Python中非常方便的RSA加密库,但提供的API并没有对长数据进行分段加密,如果RSA密钥选择1024位,那么要加密的数据最大长度为117,如果不处理会报RSA.RSAError: data too large for key size错误,我们在基础上做个修改,可以达到要求

# -*- coding: UTF-8 -*-
import M2Crypto
import base64
import sys

def encrypt_pri(msg, file):
	rsaPri = M2Crypto.RSA.load_key(file)
	buffer = []
	while msg: #分段进行加密
		input = msg[:117]
		tmp = rsaPri.private_encrypt(input, M2Crypto.RSA.pkcs1_padding) #加密填充方式为pkcs1_padding
		buffer.append(tmp)
		msg = msg[117:]
	data = base64.b64encode(''.join(buffer))
	return data
		
def decrypt_pub(msg, file):
	rsaPub = M2Crypto.RSA.load_pub_key(file)
	ctxt_pri = msg.decode("base64") # 先将str转成base64
	buffer = []
	while ctxt_pri:
		input = ctxt_pri[:128]
		ctxt_pri = ctxt_pri[128:]
		tmp = rsaPub.public_decrypt(input, M2Crypto.RSA.pkcs1_padding)
		buffer.append(tmp)
	return ''.join(buffer)
	
if __name__
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值