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ď č. 1Musí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.