web-dev-qa-db-fra.com

Erreur de nombre magique incorrect lors de la tentative de déchiffrement du fichier dans OpenSSL

J'utilise la dernière version d'OpenSSL pour Windows, j'essaie de déchiffrer un message U2FsdGVkX18ztmw81FTK/c+jAf8xtcZdIpesuV2PLDM= chiffré à l'aide de DES (le mot de passe est: pass) pour lequel j'utilise la commande suivante

des -d -in Encrypted.txt -out normal.txt

pour lequel je reçois une erreur de nombre magique après avoir entré le mot de passe: pass

Encrypted.txt contient le message crypté U2FsdGVkX18ztmw81FTK/c+jAf8xtcZdIpesuV2PLDM= Et normal.txt est vide.

J'ai cherché tous les articles dans le dépassement de pile et n'ai trouvé aucun article qui pourrait résoudre mon problème, aidez s'il vous plaît à résoudre ce problème.

10
siva

L'entrée de la commande des ne doit pas être en base64. Au lieu de cela, vous devez d'abord décoder la sortie base64, puis la fournir à la commande OpenSSL des. Par exemple, lorsque j'exécute ce qui suit sur Linux:

echo U2FsdGVkX18ztmw81FTK/c+jAf8xtcZdIpesuV2PLDM= | openssl enc -base64 -d | openssl des -d

Je reçois le bon résultat:

hello world

Comme Windows n’est pas génial avec les tubes, vous devez rediriger la sortie vers des fichiers intermédiaires, puis exécuter des commandes openssl individuelles.

8
Karthik

Le problème est openssl -a (-base64) attend une nouvelle ligne à la fin des données codées en base64. C'est un bug.

Pour contourner ce problème, commencez par décoder avec base64 --decode. Exemple:

echo -n 'Zm9vCg==' | base64 --decode | openssl enc -pass pass:pass -d
0
Jonah Braun