2013-06-03 1 views
0

Dans le cadre d'une validation de principe, une chaîne cryptée BAS64 codée/Triple DES (MODE_ECB) m'a été fournie par une tierce partie. J'ai écrit un test rapide en sachant que la valeur décryptée devrait être "testdata", mais cela ne semble pas fonctionner.Décryptage des données 3DES cryptées via une autre source

Je l'ai essayé avec pycrypto et pyDES, avec les mêmes résultats. Est-ce que je fais quelque chose de mal. Est-ce que decode ('hex') est la bonne approche pour la clé?

from Crypto.Cipher import DES3 
import base64 

class akamaiServicesTest(TestCase): 

def test_cipherDecode3DES(self): 
    key = "D41D8CD98F00B204E9800998ECF8427ECF34260089DE00EF".decode('hex') 
    encryptedString = base64.b64decode("QnRWdXFPeE8rRmJGOGVSWkhOMzFiN3l2Y01scU1QdXU=") 
    self.assertEqual(encryptedString, "BtVuqOxO+FbF8eRZHN31b7yvcMlqMPuu") 

    cipher = DES3.new(key, DES3.MODE_ECB) 
    decryptedString = cipher.decrypt(encryptedString) 
    self.assertEqual(decryptedString, "testdata") 

Répondre

2

La clé est correcte, mais le texte chiffré semble être codé en Base64 deux fois. Décodez aussi la chaîne "BtVuq ..." pour obtenir le bon texte chiffré.

Le décryptage du texte chiffré avec 3DES en mode ECB avec le remplissage PKCS # 7 produit 8 octets de données binaires et la chaîne ASCII de 8 octets "testdata". Est-ce ce que vous recherchez?

+0

Génial! Le double encodage en base64 est ce qui m'a lancé. Merci beaucoup. –

Questions connexes