我用pycrypto生成了一个公钥和私钥,然后使用export key将它们保存到一个文件中:
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()
Run Code Online (Sandbox Code Playgroud)
我使用公钥加密文件(参见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)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?我应该以不同方式保存私钥吗?我没有正确读取私钥吗?