2011-04-25 5 views
1

Pourquoi cet exemple ne fonctionne pas?exemple simple aes256 crypt

 
from Crypto.Cipher import AES 
x = AES.new("sdsfdsafsadfdsafasdfdsarwe876539", AES.MODE_CBC, "2324234342342342") 
print x.decrypt(x.encrypt('abcdfghkbhgjrdfs')) 
+0

Qu'est-ce qui ne fonctionne pas? –

Répondre

6

Parce que x est un objet avec état. L'utiliser pour chiffrer une chaîne change l'état; l'utiliser à nouveau générera une sortie différente.

Utilisez un nouveau chiffrement AES avec le même état initial que vous aviez lors du chiffrement:

>>> from Crypto.Cipher import AES 
>>> key= "sdsfdsafsadfdsafasdfdsarwe876539" 
>>> prefix= '2324234342342342' 
>>> AES.new(key, AES.MODE_CBC, prefix).encrypt('abcdfghkbhgjrdfs') 
'\xf4\xd9\xd1B8\xc1\x16\xe1\x9b~\xd0\x99\x1c\xf8\xdfn' 
>>> AES.new(key, AES.MODE_CBC, prefix).decrypt(_) 
'abcdfghkbhgjrdfs'