/ / Paddeln von DES mit Crypto.Cipher / ValueError: Eingabestrings müssen ein Vielfaches von 8 sein - Python, Padding, Des, Bloomberg

Paddeln von DES mit Crypto.Cipher / ValueError: Die Eingabezeichenfolgen müssen ein Vielfaches von 8 sein - Python, Padding, Des, Bloomberg

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 № 1

Sie 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