OverflowError: 128 bytes needed for message, but there is only space for 117

蓝色小桌子 2019-10-28 01:47:06
接口测试,有一个入参是要加密的,需求是这样的:一json串明文的,先进行base64编码,再用xx.pfx格式的私钥和私钥密码进行RSA加密,即为请求参数的值

我的实现方式是:
1.openssl pkcs12 -in cheyunlong_pri.pfx -nocerts -nodes -out private_pc.key #从xxx.pfx中提取密钥对
2.openssl rsa -in private_pc.key -out private.pem #从密钥对中提取私钥(头部格式:-----BEGIN RSA PUBLIC KEY-----)
3.openssl rsa -in private.pem -RSAPublicKey_out -out public.pem #从密钥对提取公钥(头部格式:-----BEGIN RSA PRIVATE KEY-----)

python代码如下:

import base64,rsa
privatePath = r"F:\testing\idelements\private.pem"
def encryption(data):
print("raw data -->", data)
mes = base64.b64encode(data.encode('utf-8'))
print("after base64 en", mes)
with open(privatePath,'r') as f:
privKey = rsa.PrivateKey.load_pkcs1(f.read().encode())

rsa.encrypt(mes,privKey)
return data

rawdata = {
"aa_id": "8004000084",
"bb_id": "8004000084",
"trans_id": "14744392884941234",
"trade_date": "20160921142808",
"id_card": "431224198805042030",
"id_holder": "wendy",
"yxqqsrq": "20190101",
"yxqjzrq": "20201010",
"industry_type": "A1"}
x = encryption(str(rawdata))
print("x", x)

运行总是出现:OverflowError: 128 bytes needed for message, but there is only space for 117 这个错误,百度上居然查不到,有遇到过此问题的童鞋吗?肯请帮助指教!
...全文
1874 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
reader_das 2022-04-03
  • 打赏
  • 举报
回复 1

不知道楼主问题解决没有,我遇到了类似的报错问题,但通过延长密钥长度解决了。
即可能你的密钥长度不足以完成对数据的加密,解决方法:选择更长的密钥 或者 采取缩减加密数据的长度的方法临时验证我的方法的可行性。

蜡笔刘 2022-04-08
  • 举报
回复
@reader_das 请问 选择更长的密钥 是怎么实现的?感谢
蓝色小桌子 2019-10-29
  • 打赏
  • 举报
回复
引用 4 楼 jmzl 的回复:
[quote=引用 3 楼 蓝色小桌子的回复:][quote=引用 2 楼 jmzl 的回复:] [quote=引用 1 楼 jmzl的回复:]UTF-8可以直接base64加密
尴尬了!我忘记了我的base64是我自己写的[/quote] 请教大拿,那我这个是哪错了啊?麻烦请指教[/quote] x = encryption(str(rawdata)) 这句改改 x = encryption(rawdata.__str__())[/quote] 还是出现 OverflowError: 328 bytes needed for message, but there is only space for 117 这个错误
jmzl 2019-10-28
  • 打赏
  • 举报
回复
引用 3 楼 蓝色小桌子的回复:
[quote=引用 2 楼 jmzl 的回复:] [quote=引用 1 楼 jmzl的回复:]UTF-8可以直接base64加密
尴尬了!我忘记了我的base64是我自己写的[/quote] 请教大拿,那我这个是哪错了啊?麻烦请指教[/quote] x = encryption(str(rawdata)) 这句改改 x = encryption(rawdata.__str__())
蓝色小桌子 2019-10-28
  • 打赏
  • 举报
回复
引用 2 楼 jmzl 的回复:
[quote=引用 1 楼 jmzl的回复:]UTF-8可以直接base64加密
尴尬了!我忘记了我的base64是我自己写的[/quote] 请教大拿,那我这个是哪错了啊?麻烦请指教
jmzl 2019-10-28
  • 打赏
  • 举报
回复
引用 1 楼 jmzl的回复:
UTF-8可以直接base64加密
尴尬了!我忘记了我的base64是我自己写的
jmzl 2019-10-28
  • 打赏
  • 举报
回复
UTF-8可以直接base64加密

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧