2015-07-20 4 views
0

Когда я пытаюсь преобразовать в шестнадцатеричный вывод моего кода шифрования AES 128, используя pycrypto. Я использую hexlify. Выход составляет 64 бита для 32-битного ввода. Выход всегда вдвое больше размера для любого ввода, а при использовании онлайн-компилятора я получаю идеальный 32-разрядный вывод. НеправильноДлина вывода шифрования AES 128 в python

В каком формате я должен преобразовывать данные, чтобы получить тот же размер, что и вход, при его внедрении.

text= 3235383334332b352b3934363230383037312b3100000000 

key ='abcdef' 

iv = '/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00' 

encryptor = AES.new(key,mode,IV=iv) 

output=encryptor.encrypt(text) 

я зашифрованное вывод как

?"?χ?v??? 
     ؛?3(???nyA??U?}??/??> 

Я хотел, чтобы преобразовать его в формат, где я мог читать его, следовательно, был преобразовав его проклясть

efb82283cf87e7127696baad0c1bd89b3781331c289db9f96e7941d3cd55c77db8a72fdcdd3e1ac1bc9031c61c998e49 

вы можете предложить какой-либо другой читаемый формат, в который я мог бы преобразовать свои данные в?

+0

Просьба указать код, который демонстрирует вашу проблему, например, входы, выходы и ожидаемые выходы. –

+0

Почему он должен быть того же размера? Hex будет стандартом для того, чтобы сделать его доступным для чтения. Гораздо лучше, чем двоичный или восьмеричный. – mikeazo

ответ

1

Цитирую python documentation for binascii.hexlify (курсив добавлен):

Возвращение шестнадцатеричное представление двоичных данных. Каждый байт данных преобразуется в соответствующее двухзначное шестнадцатеричное представление. Полученная строка поэтому в два раза длиннее длины данных.

 

Какой формат я должен преобразовать данные, чтобы получить тот же размер, что и вход во время его реализации.

Не конвертируйте его вообще. Просто напишите его как двоичные данные.

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