Problem beim Entschlüsseln von Dateien mit OpenSSL: „Hex-String ist zu kurz, auf Länge mit null Bytes auffüllen“

Problem beim Entschlüsseln von Dateien mit OpenSSL: „Hex-String ist zu kurz, auf Länge mit null Bytes auffüllen“

Beim Versuch, eine Datei mit Open SSL zu entschlüsseln, tritt ein Problem auf. Ich habe eine Datei mit dem Namen, fc382Crypto.bindie mir mein Lehrer gegeben hat, und ich muss sie mit dem Blowfish-Algorithmus im CBC-Modus entschlüsseln.

Hier ist der Befehl, den ich zum Entschlüsseln der Datei verwende:

openssl enc -aes-128-cbc -d -in fc382Crypto.bin -out decrypted_output.txt -K 112233445566778899 -iv 0000000000000000

Ich erhalte jedoch ständig die folgende Fehlermeldung:

hex string is too short, padding with zero bytes to length
hex string is too short, padding with zero bytes to length
bad decrypt

Ich habe versucht, den Befehl durch Hinzufügen der Option anzupassen -nopad, aber das Problem besteht weiterhin. Ich habe auch die Integrität der fc382Crypto.binDatei überprüft, um sicherzustellen, dass sie nicht beschädigt wurde.

Die von meinem Dozenten bereitgestellten Verschlüsselungseinstellungen lauten wie folgt:

Algorithm: Blowfish
Mode: CBC
Key: 112233445566778899
IV: 0

Ich bin mir nicht sicher, warum dieser Fehler auftritt oder wie ich ihn beheben kann. Kann mir bitte jemand erklären, wie ich diese Datei mit OpenSSL richtig entschlüsseln kann?

Bildbeschreibung hier eingeben

Antwort1

Ich bin nicht sicher, warum dieser Fehler auftritt oder wie ich ihn beheben kann.

Sie verwenden einen 128-Bit-Verschlüsselungsalgorithmus. Ihr Verschlüsselungsschlüssel und Initialisierungsvektor (IV) müssen also 128 Bit lang sein.

Schlüssel:0x00000000000000112233445566778899

IV: 0x00000000000000000000000000000000

Eine Verschlüsselungsmethode von AES-128 signalisiert, dass Mediensegmente vollständig mit dem Advanced Encryption Standard (AES) [AES_128] mit einem 128-Bit-Schlüssel, Cipher Block Chaining (CBC) und Public-Key Cryptography Standards #7 (PKCS7)-Padding [RFC5652] verschlüsselt sind. CBC wird an jeder Segmentgrenze neu gestartet, wobei entweder der Attributwert des Initialisierungsvektors (IV) oder die Mediensequenznummer als IV verwendet wird; siehe Abschnitt 5.2.

IV

Der Wert ist eine Hexadezimalsequenz, die einen 128-Bit-Integritätsinitialisierungsvektor ohne Vorzeichen angibt, der mit dem Schlüssel verwendet werden soll. Die Verwendung des IV-Attributs ERFORDERT eine Kompatibilitätsversionsnummer von 2 oder höher. Informationen dazu, wann das IV-Attribut verwendet wird, finden Sie in Abschnitt 5.2.

Quelle:https://www.rfc-editor.org/rfc/rfc8216#section-4.3.2.4

verwandte Informationen