2017-11-02 3 views
0

Dies ist mein Code:Python decrypt 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 

Script Ausgabe:

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

Warum Skript kann nicht entschlüsseln?

OS = Ubuntu 16.04 

Python Version = 2.7.12 
+2

Nun, ich denke, eine Sache ist, dass Sie den Schlüssel sind unencoding, aber Sie verschlüsselt sie mit dem Base64-String. –

+0

also entschlüsseln Sie den base64-Schlüssel nicht, weil Sie die Chiffre ändern –

Antwort

0

Der Schlüssel für die AES-Funktion sollte im Binärformat vorliegen. In Ihrem Fall codieren Sie zuerst den Schlüssel für Base-64. In der Verschlüsselung scheint es, dass Sie versehentlich diese codierte Zeichenfolge als Schlüssel verwenden.

Fest Code-Schnipsel:

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))