IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Déchiffrage fichier openSSL aes256 cbc


Sujet :

Langage C++

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Points : 55
    Points
    55
    Par défaut Déchiffrage fichier openSSL aes256 cbc
    Salut à tous,

    J'ai développé un programme sous Raspbian Jessie et je crée des fichiers que je chiffre avec cette commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    openssl enc -e -aes-256-cbc -in fichier -out fichier-chiffré
    Et pour le déchiffrement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    openssl enc -d -aes-256-cbc -in fichier-chiffré -out fichier
    Bref quelque chose de très simple (dans ce cas, j'utilise un pwd par défaut, donc je ne lui passe pas en paramètre)

    Par contre, les fichiers chiffrés sont récupérés sous windows et donc je dois les déchiffrer.

    Alors mes recherches me donnent pas mal de choses comme: EVP_aes_256_cbc ou encore: AES_cbc_encrypt(enc_out, dec_out, encslength,&dec_key, iv, AES_DECRYPT); ou encore avec une librairie comme #include CkCrypt2.h;....

    Bref, pas mal de choses ou on me demande d'ajouter un vecteur iv....

    Et là ben je ne sais pas quoi faire.... Y a t-il quelque chose d'aussi simple que sous Linux?

    Merci pour votre aide

    Pascal

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Bah, si. OpenSSL.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Points : 55
    Points
    55
    Par défaut
    Euh.... Comment te dire, Merci.
    oui, j'essaye d'utiliser openSSL, mais c'est justement ma question, si tu la lis bien, ce n'est pas d'utiliser openSSL qui me pose problème, mais comment l'utiliser de façon aussi simple que sous Linux...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Et bien tu fais comme tu fais sur ta machine Linux : tu installes les binaires pour Windows, ajoute ce qu'il faut au PATH etc pour pouvoir être utilisé dans la ligne de commande aisément (souvent automatiquement fait lors de l'installation) et t'as gagné.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Points : 55
    Points
    55
    Par défaut
    Ok, je sais faire ça. Je dois pas vraiment bien m'expliquer, lol
    En fait le programme windows sera installé sur différenst PC et le déchiffrement se fera en auto, pas en ligne de commande, il faudrait donc que j'installe openSSL dans un répertoire et que j'embarque que la/les lib(s) et include(s) nécessaire. Jusque là j'ai réussi.
    mais je ne trouve pas dans le .h aes une commande aussi simple que celle que j'utilise sous linux, il me demande un vecteur iv et je ne sais pas quoi lui mettre... Sous linux, j'utilise juste un mot de passe, je vous mets mon code Linux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    key = "MonSuperMotDePasse"; //par défaut
    /**
     * Déchiffrage d'un fichier finissant par _chif avec mot de passe par défaut
     */
    void CryptDecrypt::fileDecryptAes(string pFileName){
     
      fileDecryptAesPwd(pFileName, key);
    }
     
    /**
     * Déchiffrage d'un fichier finissant par _chif avec mot de passe en param
     */
    void CryptDecrypt::fileDecryptAesPwd(string pFileName, string pPwd){
     
      string commande = "openssl enc -d -aes-256-cbc -in \""
                            +pFileName +"\"_chif -out \""
                            +pFileName +"\"_dechif -pass pass:"
                            +pPwd;
        std::system(commande.c_str());
    }
    Et là je ne vois pas de iv...

    d'ailleurs, dans aes.h on ne voit pas de aes_256_CBC, on ne voit qu'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
                         size_t length, const AES_KEY *key,
                         unsigned char *ivec, const int enc);
    avec un iv et dans evp.h, on voit un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const EVP_CIPHER *EVP_aes_256_cbc(void);
    Bref, je suis un peu perdu là...

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Points : 55
    Points
    55
    Par défaut
    Bon, aucune réponse, je sens que ça va être chaud ça....

    Bon, en fait j'ai besoin d'un éxécutable openssl avec ses dll, mais sans faire d'installation sous windows, ou alors dans un dossier que je maîtrise, que je pourrai joindre à mon exe...

    Que je pourrai utiliser comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    openssl.exe aes-256-cbc -d -in somefile.pdf.cry -out decriptedfile.pdf
    Merci

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Créer un exécutable pour appeler la méthode system alors que tu possèdes les sources, tu ferais mieux d'apprendre à les utiliser et les intégrer correctement dans ton programme.
    system n'est pas une bonne pratique. Si ton programme est juste là pour faire un appel à system, on a inventé les scripts batch, bash, cmd etc depuis belle lurette.
    Et pour ça, tu dois lire la doc.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Points : 55
    Points
    55
    Par défaut
    Salut,
    Merci pour ta réponse, mais là c'est vraiment pas un cadeau....
    Bon alors pour commencer, mon programme fait plein d'autres choses que juste faire appel à "system"
    Ensuite, j'ai déjà essayé de parcourir la doc, c'est franchement imbouffable et donc pas un cadeau...
    Bon si pas d'aide, je vais réussir bien à me débrouiller...

    Rien que pour compiler openssl, c'est un monstre de galère sous windows, mais j'ai fini par trouver ça: https://slproweb.com/products/Win32OpenSSL.html et là au moins j'ai un openssl.exe utilisable, je vais voir ce que je peux faire avec ça...

    Bye
    Pascal

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 91
    Points : 55
    Points
    55
    Par défaut
    Bon et bien voilà, ça marche comme ça...
    Après avoir installé openssl en suivant le lien de mon précédent post...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    system("C:\\Users\\Pascal\\Desktop\\TestCharWindows\\OpenSSL-Win64\\bin\\openssl.exe enc -e -aes-256-cbc -in \"TestChar.txt\" -out \"TestChar.txt.chif\" -pass pass:\"123456789\"");
     
     
    system("C:\\Users\\Pascal\\Desktop\\TestCharWindows\\OpenSSL-Win64\\bin\\openssl.exe enc -d -aes-256-cbc -in \"TestChar.txt.chif\" -out \"TestChar.txt.dechif\" -pass pass:\"123456789\"");
    Alors c'est sans doute pas très joli ou pas une bonne pratique et je serai le premier à vouloir apprendre, mais je suis sec et ça fait bientôt 6 jours que je sèche, alors sans aide je n'y arriverai pas....
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. signer un fichier en c# / OpenSSL
    Par elqomri dans le forum C#
    Réponses: 1
    Dernier message: 27/05/2011, 13h35
  2. Réponses: 0
    Dernier message: 29/04/2011, 16h01
  3. Réponses: 5
    Dernier message: 14/04/2011, 15h29
  4. Réponses: 0
    Dernier message: 28/02/2011, 20h58
  5. Openssl signature d'un fichier à l'aide de la clé dsa
    Par hammag dans le forum Sécurité
    Réponses: 1
    Dernier message: 26/12/2006, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo