/ / Paddling DES с Crypto.Cipher / ValueError: Входните низове трябва да са с дължина 8 пъти - python, padding, des, bloomberg

Paddling DES с Crypto.Cipher / ValueError: Входните низове трябва да са с дължина 8 пъти - python, padding, des, bloomberg

Опитвам се да декриптирам файловете на Bloomberg, които са DES криптирани.

Ще получавам "ValueError: Входните низове трябва да са с дължина 8 "което аз разбирам означава, че трябва да" гребят "данните на правилния размер на байтовете.

Ако е така, как мога да го направя с помощта на Crypto.Cipher?

f = open(SourcePath+FileName, "r")
content = f.readlines()
key = b"Eight888"
msg=content[0]
from Crypto.Cipher import DES
decCipher = DES.new(key, DES.MODE_OFB, msg[:DES.block_size])
msgback = decCipher.decrypt(msg[DES.block_size:])

Отговори:

0 за отговор № 1

Трябва да сте сигурни в това msg има дължина, която е кратно на 8. Не, просто добавете някои случайни знаци в края на него.

Актуализирано след коментарите на BuckTurgidson

Може да бъде бърз тест

if len(msg) % 8 != 0:
toAdd = 8 - len(msg) % 8
# add toAdd chars to msg

но това работи само ако msg е низ

Логиката е валидна и за бинарни буфери


0 за отговор № 2

Блумбърг осигурява инструмент за декриптиране на командния ред,след като внедрих декриптирането в Java, бих казал, че не си заслужава усилието и трябваше просто да продължим да извикваме процеса на декриптиране.

Можете да намерите примерно изпълнение на Java тук въпреки че ви предупреждавам, че има грешка, когато съобщението за декриптиране е точно размерът на буфера, който го зареждате.