Ich versuche, Bloomberg-Dateien zu entschlüsseln, die DES-verschlüsselt sind.
Ich erhalte einen ValueError: Input-Strings müssen ein Vielfaches von 8 sein "Was ich verstehe, bedeutet, dass ich die Daten auf die richtige Bytegröße" paddeln "muss. In diesem richtig?
Wenn ja, wie kann ich Crypto.Cipher verwenden?
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:])
Antworten:
0 für die Antwort № 1Sie müssen sich sicher sein msg
hat eine Länge, die ein Vielfaches von 8 ist. Nicht, fügen Sie am Ende ein paar zufällige Zeichen hinzu.
Nach BuckTurgidson-Kommentaren aktualisiert
Ein kurzer Test kann sein
if len(msg) % 8 != 0:
toAdd = 8 - len(msg) % 8
# add toAdd chars to msg
aber das funktioniert nur wenn msg
ist eine Zeichenfolge
Die Logik gilt auch für binäre Puffer
0 für die Antwort № 2
Bloomberg liefert ein KommandozeilenentschlüsselungswerkzeugNachdem ich die Entschlüsselung in Java selbst implementiert hatte, würde ich sagen, dass sich die Mühe nicht gelohnt hat, und wir hätten einfach fortfahren müssen, den Prozess für die Entschlüsselung aufzuheben.
Sie finden eine Java-Beispielimplementierung Hier obwohl ich warne, dass es einen Fehler gibt, wenn die Entschlüsselungsnachricht genau die Größe des Puffers hat, in den Sie sie laden