I'm trying to use AES to safely store some passwords in a home-made password safe, but for some reason I'm not getting the original data back from AES.decrypt
. Here is the code I'm testing with:
from Crypto.Cipher import AES
from Crypto.Hash import SHA256
def sha1(text):
s = SHA256.new()
s.update(text)
return s.hexdigest()
aes = AES.new('JG9A90cqiveJ8K7n', AES.MODE_CFB, 'g4vhFIR1KncRIyvO')
text = 'This is some text that will be encrypted'
encrypted_text = aes.encrypt(text)
decrypted_text = aes.decrypt(encrypted_text)
print 'Original:\t' + sha1(text)
print 'Encrypted:\t' + sha1(encrypted_text)
print 'Decrypted:\t' + sha1(decrypted_text)
It's output:
Original: 099e17130a9c796c8b7f21f269a790e877c7f49b6a39deda33d4e7b63b80c049 Encrypted: 71006ff5dc695a32c020dbb27c45b4861ec10a76e40d349bf078bca56b57d5bb Decrypted: 2683455f4ae01e3cd1cba6c2537712fee8783621f32c865b8d4526130ff0096d
I'm using the cypher feedback mode because I want to be able to encrypt and decrypt strings of any length, plus it won't bother me that it works on a byte-by-byte basis since I'm only planning on encrypting small strings.
What am I doing wrong here?