我试图用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)
但我总是有明文大小的问题。
目前没有回答
相关问题 更多 >
编程相关推荐