我正在尝试使用不对称加密和python来加密小数据。我目前正在使用M2Crypto生成1024位私有/公钥对。
使用不同的python库(例如具有M2Crypto和Pycrypto(带有若干变体))后,我遇到了纯文本大小问题:ValueError:Plaintext is too long。发生这种情况是因为我试图加密数据,然后再加密最后的加密(加密加密),例如:
加密:EKpuuser(EKprown(Data))-> EData
puser:公钥用户,prown:私钥(数据)所有者
解密:DKpruser(DKpuown(EData))->数据
pruser:私钥用户,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)
但是我总是遇到纯文本大小的问题。
经过更多的研究,我设法找到了对我有帮助的东西。这不是我要查找的内容的100%(与纯文本大小错误有关),但是可以帮助我以某种方式使用签名来解决问题。这是我确实找到了信息的链接:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句