/ / Paddling DES s Crypto.Cipher / ValueError: Vstupné reťazce musia byť násobkom 8 - python, padding, des, bloomberg

Paddling DES s Crypto.Cipher / ValueError: Vstupné reťazce musia mať násobok 8 dĺžok - python, padding, des, bloomberg

Snažím sa dešifrovať súbory Bloomberg, ktoré sú šifrované DES.

I "m získavanie" ValueError: Vstupné reťazce musia byť násobkom 8 v dĺžke "čo chápem znamená, že potrebujem" pádlovať "dáta do správnej veľkosti bajtov.

Ak áno, ako to môžem urobiť pomocou 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:])

odpovede:

0 pre odpoveď č. 1

Musíte si to byť istí msg má dĺžku, ktorá je násobkom 8. Nie, len pridajte na konci nejaké náhodné znaky.

Aktualizované po komentároch BuckTurgidson

Rýchly test môže byť

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

ale táto práca len ak msg je reťazec

Logika je platná aj pre binárne buffery


0 pre odpoveď č. 2

Bloomberg dodáva dešifrovací nástroj príkazového riadka,Ak by som sám implementoval dešifrovanie v Jave, povedal by som, že to nestojí za námahu a mali sme pokračovať vo vyraďovaní z procesu dešifrovania.

Môžete nájsť vzorovú implementáciu Java tu aj keď vás varujem, existuje chyba, keď je dešifrovacia správa presne veľkosť vyrovnávacej pamäte, do ktorej ju načítate.