非对称密码明文大小

2024-05-15 01:53:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python的非对称加密技术来加密小数据。我目前正在使用M2Crypto生成1024位的私钥/公钥对。

在使用了不同的python库之后,比如m2cypto和Pycrypto(上面有几个变体),我遇到了纯文本大小问题:ValueError:纯文本太长。 发生这种情况是因为我试图对数据进行加密,然后对最后一次加密(加密后再加密)进行加密,例如:

加密: EKpuuser(EKprown(数据))->;EData

puser:公钥用户, prown:私钥(数据)所有者

解密: DKpruser(DKpuown(EData))->;数据

私钥用户, puown:公钥(数据)所有者

我在网上找到了很多解决方案,但唯一能帮助我解决这个问题的是在加密之前使用签名:

ciphertext = 'xpto'
m_EOi = hashlib.sha1()
m_EOi.update(ciphertext_EOi)
sig_EOi = (m_EOi.hexdigest())

但这个解决方案并不是我所需要的,因为在我使用它并加密签名(并加密加密)之后,再进行解密,无法解密签名,所以无法得到初始消息。

编辑:

我已经做了一些事情,例如:

BLOCK_SIZE = 32 
PADDING = '{' 
message = 'today' 
key = 'aaaaaaaaaa123456' 
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING 
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s))) cipher = AES.new(key) 
encoded = EncodeAES(cipher, message)

key = 123 
h1 = SHA256.new() 
h1.update(key) 
key1 = h1.digest()[0:16] 
iv1 = Random.new().read(16) 
cipher1 = AES.new(key1, AES.MODE_CFB, iv1) 
criptogram1 = iv1 + cipher1.encrypt(data1)

但我总是有明文大小的问题。


Tags: 数据key用户文本gtnewsizeblock

热门问题