Опитвам се да декриптирам файловете на 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 тук въпреки че ви предупреждавам, че има грешка, когато съобщението за декриптиране е точно размерът на буфера, който го зареждате.