2010-08-20 4 views
0

Comment crypter & décrypter des fichiers binaires en C en utilisant OpenSSL?Problème avec le cryptage et le décryptage des fichiers binaires

J'ai un programme de test qui crypte, puis décrypte l'entrée qui lui est donnée.

J'ai exécuté mon programme de test pour les fichiers texte, et la sortie est la même que l'entrée, mais lorsque j'exécute mon programme de test sur un fichier binaire, la sortie n'est pas la même que l'entrée.

+0

Vous devriez essayer de ne pas utiliser CAPSLOCK dans votre titre, c'est plutôt agressif. –

+0

Cesseriez-vous de crier? –

+3

Peut-être que vous pourriez poster quelques parties pertinentes du programme de test que vous avez écrit? – Gian

Répondre

1

Vous devinez simplement: vous utilisez Windows et O_BINARY manqué indicateur dans les opérations de fichiers?

1

Les chances sont que vous utilisez des fonctions de chaîne comme strlen() sur les tampons que vous lisez. Les fonctions OpenSSL fonctionnent correctement pour les fichiers binaires.

1

Sans voir votre code, nous pouvons seulement deviner. Mais ma première supposition serait que votre routine de cryptage ou de décryptage est entaillé sur un caractère \ 0 ou deux dans le fichier binaire. Les données doivent être traitées comme des octets et non comme des chaînes de caractères. (Même que le problème StrLen() mentionné ailleurs sur cette page.)

Je ne suis pas un programmeur C (!) Mais la façon dont j'ai réussi à faire fonctionner les routines de chiffrement dans Delphi/Pascal était en téléchargeant le OpenSSL source (en C) et en passant par le code pour l'application openssl.exe. L'utilisation des fonctions EVP_ * est devenue beaucoup plus facile une fois que vous travaillez sur comment ils le font eux-mêmes.

Questions connexes