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.
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.
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