Я создал открытый и закрытый ключ с 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)
Когда я читаю файл, чтобы расшифровать его, я получаю "Ciphertext с неправильной длиной".
Я добавил блок try-except вокруг кода дешифрования на примере Deepal Jayasekara:
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)
Я что-то упускаю? Должен ли я сохранять секретный ключ по-другому? Я не правильно читаю секретный ключ?