2013-06-03 5 views
0

В качестве части доказательства концепции мне была предоставлена ​​зашифрованная строка bas64/Triple DES (MODE_ECB) от третьей стороны. Я написал быстрый тест, зная, что дешифрованное значение должно быть «testdata», но оно, похоже, не работает.Расшифровка данных 3DES, зашифрованных через другой источник

Я пробовал его как с пикрипто, так и с pyDES с теми же результатами. Я делаю что-то неправильно. Является ли декодирование ('hex') правильным подходом к ключу?

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

ответ

2

Ключ правильный, но зашифрованный текст, по-видимому, кодируется Base64 дважды. Декодируйте строку «BtVuq ...», чтобы получить правильный зашифрованный текст.

Расшифровка зашифрованного текста с помощью 3DES в режиме ECB с заполнением PKCS # 7 создает 8 байтов двоичных данных и 8-байтовую строку ASCII «testdata». Это то, что вы ищите?

+0

Awesome! Кодирование double base64 - это то, что меня бросило. Огромное спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^