Я думаю, это то, что вам нужно:
>>> from Crypto.Cipher import DES
>>> code = 'cb9108614c943d96bedd2bae934c5aa3d5c4318f81cc81f255127292f2935bbc0a8990f36c1ffa20a0639ed8a6989bacc36bd11f6b2ecdab'
>>> key = b'5199D19B'
>>> ciphert = DES.new(key, DES.MODE_ECB)
>>> ciphert.decrypt(code.decode('hex'))
'Well done, you have been able to decode the message. \x00\x00\x00'
Обычно при передаче зашифрованного текста в функцию «декодирования» в криптографических библиотеках его следует передавать как объект bytes
(так как зашифрованный текст может содержать произвольные байтыв общем). По какой-то причине он просто не принимает объект bytearray
- это должно быть реализовано отдельно.
code.decode('hex')
делает то же самое, что вы хотели - он преобразует строку шестнадцатеричных цифр в ихфактические значения байтов.
Обновление для Python 3:
На Python 3 code.decode('hex')
не будет работать. Вместо этого используйте bytes.fromhex(code)
(аналогично bytearray.fromhex
, но просто возвращайте неизменный bytes
экземпляр).