我用pycrypto生成了一个公钥和私钥,并使用导出密钥将它们保存到一个文件中:
from Crypto.PublicKey import RSA
bits=2048
new_key = RSA.generate(bits, e=65537)
prv = open('keymac.pem','w')
prv.write(new_key.exportKey('PEM'))
prv.close()
pub = open('pubmac.pem', 'w')
pub.write(new_key.publickey().exportKey('PEM'))
pub.close()
我使用公钥加密文件(在http://insiderattack.blogspot.com/2014/07/encrypted-file-transfer-utility-in.html#comment-form之后)
当我读取文件解密时,我得到“长度不正确的密文”
我在Deepal Jayasekara的解密代码周围添加了一个try-except块示例:
try:
encryptedonetimekey = filetodecrypt.read(512)
privatekey = open("keymac.pem", 'r').read()
rsaofprivatekey = RSA.importKey(privatekey)
pkcs1ofprivatekey = PKCS1_OAEP.new(rsaofprivatekey)
aesonetimekey = pkcs1ofprivatekey.decrypt(encryptedonetimekey)
except Exception as decrypprivkeyerr:
print "Decryption of the one time key using the private key failed!!"
print "Key error == %s" %decrypprivkeyerr
raise Exception("Decryption using Private key failed error = %s" %decrypprivkeyerr)
我遗漏了什么吗?我应该以不同的方式保存私钥吗?我没有正确阅读私钥吗?
错误信息“长度不正确的密文”告诉了我们所有人。也就是说, 密码文本超出了可以计算的限制长度(密钥长度, 1024.2048..)/8。为了解决这个问题,您可以分离密码文本并解密 它们在一个循环中,然后集合所有解密的字节字符串。我在Python 3.6中的代码供参考:
这并不能直接回答你的问题,但可能会给你一些问题的线索。Im使用两个函数将内容加密到文件,而不是直接加密文件。一个用于对文件进行加密(在我的例子中是用户名和密码),另一个用于根据需要对数据进行解密。
注意填充物的需要
在文件中创建加密内容:
解密数据
相关问题 更多 >
编程相关推荐