2017-11-02 3 views
0

を復号これが私のコードです:PythonはAES

from Crypto.Cipher import AES 
from Crypto import Random 
import base64 

Plain_text = "Text" 
random = Random.new() 
IV = random.read(AES.block_size) 
KEY = base64.b64encode(random.read(AES.key_size[0])) 
Cipher = AES.AESCipher(KEY, AES.MODE_CFB, IV) 
print "Key:", KEY 

Encrypting = Cipher.encrypt(Plain_text) 
print "Encrypting:\n",Encrypting 


#KEY2 = base64.b64decode(KEY) 
#IV2 = random.read(AES.block_size) 
#print "KEY2:", KEY2 
Cipher2 = AES.AESCipher(base64.b64decode(KEY), AES.MODE_CFB, IV) 
Decrypting = Cipher2.decrypt(Encrypting) 
print "Decrypting:\n", Decrypting 

スクリプトの出力:

Output is: 
Key: VYy9unePPuKiQHwVcqkJzA== 
Encrypting: 
�F!C 
Decrypting: 
��� 

スクリプトが解読できないのはなぜ?

OS = Ubuntu 16.04 

Python Version = 2.7.12 
+2

まあ、私は一つのことは、あなたが鍵をunencodingしているですが、base64文字列でそれを暗号化されたと思います。 –

+0

暗号を変更しているので、base64鍵をデコードしないでください –

答えて

0

AES機能に提供されるキーはバイナリ形式である必要があります。あなたの場合、最初にベース64にキーをエンコードしています。暗号化では、このエンコードされた文字列をキーとして誤って使用したようです。

固定コードスニペット:

from Crypto.Cipher import AES 
from Crypto import Random 
import base64 

plaintext = "Text" 
random = Random.new() 
iv = random.read(AES.block_size) 
key = random.read(AES.key_size[0]) 
cipher = AES.AESCipher(key, AES.MODE_CFB, iv) 

key_b64 = base64.b64encode(key) 
print ("Key: {}".format(key_b64)) 

ciphertext = cipher.encrypt(plaintext) 
print("Encrypting: {}".format(ciphertext))