python大数加法、需要ut_对于密钥大小,Python加密数据太长

我试图用非对称加密来加密我的邮件。我用的是SHA256算法。密钥大小是2048。这是我的代码:-在from cryptography.hazmat.backends import default_backend

from cryptography.hazmat.primitives.asymmetric import padding

from cryptography.hazmat.primitives import serialization, hashes

private_key = rsa.generate_private_key(

public_exponent=65537,

key_size=2048,

backend=default_backend()

)

public_key = private_key.public_key()

# saving public key

pem = public_key.public_bytes(

encoding=serialization.Encoding.PEM,

format=serialization.PublicFormat.SubjectPublicKeyInfo

)

with open('public_key.pem', 'wb') as f:

f.write(pem)

# reading public key

with open("public_key.pem", "rb") as key_file:

public_key = serialization.load_pem_public_key(

key_file.read(),

backend=default_backend()

)

message = {

'504201': '504346',

'504293': '504306',

'504299': '504273',

'B.O': 'B.O',

'Non-Delivery': 'Delivery',

'regionname': 'Hyderabad',

'Sirpur (t)': 'Asifabad',

'ANDHRA PRADESH\nAnnaram B.O': 'ANDHRA PRADESH\nChichdhari Khanapur B.O',

'officeType': 'S.O',

'Nirmal': 'Adilabad',

'circlename': 'Andhra Pradesh',

'Districtname': 'Adilabad',

'ANDHRA PRADESH\nBansapalli B.O': 'ANDHRA PRADESH\nDeepaiguda B.O',

'pincode': '504103',

'ANDHRA PRADESH\nAndugulpet B.O': 'ANDHRA PRADESH\nBurguda B.O',

'504202': '504313',

'504231': '504293',

'Hyderabad': 'Hyderabad',

'Khanapur': 'Utnoor',

'Luxettipet': 'Asifabad',

'officename': 'dilabad)',

'ANDHRA PRADESH\nBellalbadi B.O': 'ANDHRA PRADESH\nDhaboli B.O',

'Taluk': 'Mudhole',

'ANDHRA PRADESH\nBambara B.O': 'ANDHRA PRADESH\nCoal Chemical Complex S.O',

'ANDHRA PRADESH\nBangalpet B.O': 'ANDHRA PRADESH\nDantanpalli B.O',

'salt': 1,

'divisionname': 'Adilabad',

'statename\nAda B.O': 'ANDHRA PRADESH\nBirvelli B.O',

'Delivery': 'Delivery',

'ANDHRA PRADESH\nBhainsa S.O (A': 'ANDHRA PRADESH\nDhann',

'504106': '504311',

'Andhra Pradesh': 'Andhra Pradesh',

'ANDHRA PRADESH\nArli (T) B.O': 'ANDHRA PRADESH\nChintaguda B.O',

'504295': '504302',

'Asifabad': 'Mancherial',

'ANDHRA PRADESH\nBejjur B.O': 'ANDHRA PRADESH\nDehgaon B.O',

'504306': '504309',

'504312': '504296',

'Adilabad': 'Adilabad',

'Deliverystatus': 'Delivery',

'Chennur': 'Utnoor'

}

message = json.dumps(message).encode('utf-8')

encrypted = self.public_key.encrypt(

message,

padding.OAEP(

mgf=padding.MGF1(algorithm=hashes.SHA256()),

algorithm=hashes.SHA256(),

label=None

)

)

上面的代码引发了一个异常ValueError: Data too long for key size. Encrypt less data or use a larger key size.,如果我将key_的大小增加到4096,它就可以工作了。但是,如果我的数据有更多的键,即使4096也会失败。在

作为解决方法,我阅读了多个类似的SO问题,其中建议使用对称加密缩短(加密)数据,然后使用非对称加密。在

我尝试了和以下内容:在

^{pr2}$

这也会导致相同的错误,因为cipher_text又太长了。在

我怎么做对了?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值