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

C++ Discussion :

probleme avec la compilation de openssl


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : Chercheur en informatique
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Par d�faut probleme avec la compilation de openssl
    bonjour
    je veux crypter mes fichier perso en aes 128 avec openssl ,je suis debutant en c++ ,alors j'ai trouver un code sur le net ,et apres l'avoire modifier selon mes besoins quand je le compile j'obtien :

    C:\Users\Animalx\AppData\Local\Temp\ccgTRryo.o hola.cpp.text+0x3ba): undefined reference to `AES_set_encrypt_key'
    C:\Users\Animalx\AppData\Local\Temp\ccgTRryo.o hola.cpp.text+0x431): undefined reference to `AES_cfb128_encrypt'
    C:\Users\Animalx\Documents\collect2.exe [Error] ld returned 1 exit status
    et meme avec le code d'origine c'est la meme erreur , j'ai fait des recherehe sur le net et l'erreur vient d'une mal installation de la lib openssl mais je l'ai reinstaller avec les dll et les include etc mais c'est pareille.
    voici mon code :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #include <iostream>
    #include<fstream>
    #include <stdlib.h>
    #include<string.h>
    #include <stdio.h>
    #include<vector>
    #include <openssl/evp.h>
    #include <openssl/aes.h>
     
    using namespace std;
     
    int tex (const char fi[]);
    void enc();
     
     
    int main(){
    	string ch ="hhhhhh.bdd";
    	const char *chh= ch.c_str();
    	cout<<tex(chh)<<endl;
     
     
    	return 0;
    }
     
    int tex (const char fi[]){
    	string hh[]={".mp3",".jpeg",".txt",".py",".bdd"};
    	char *p ;
        p = strrchr(fi, '.');
        int r =0;
    	for(int i (0);i<5;i++){
    		if(!strcmp(p, hh[i].c_str())) r=1;		
    	} 
    	    return r;  	
    	}
     
     
     
    void enc()
    {
      int bytes_read, bytes_written;
      unsigned char indata[AES_BLOCK_SIZE];
      unsigned char outdata[AES_BLOCK_SIZE];
     
      /* ckey and ivec are the two 128-bits keys necesary to
         en- and recrypt your data.  Note that ckey can be
         192 or 256 bits as well */
      const unsigned char ckey[] =  "thiskeyisverybad";
      unsigned char ivec[] = "dontusethisinput";
      FILE *ifp = fopen("C:\\Users\\Animalx\\Desktop\\Nouveau dossier\\Visual Studio 2017 (2).exe", "rb");
      FILE *ofp = fopen("C:\\Users\\Animalx\\Desktop\\Nouveau dossier\\output_file.enc", "wb");
     
      /* data structure that contains the key itself */
     AES_KEY key;
     
      /* set the encryption key */
      AES_set_encrypt_key(ckey, 128, &key);
     
      /* set where on the 128 bit encrypted block to begin encryption*/
      int num = 0;
     
      while (1) {
        bytes_read = fread(indata, 1, AES_BLOCK_SIZE, ifp);
     
        AES_cfb128_encrypt(indata, outdata, bytes_read, &key, ivec, &num,
               AES_ENCRYPT);
     
        bytes_written = fwrite(outdata, 1, bytes_read, ofp);
        if (bytes_read < AES_BLOCK_SIZE)
      break;
     
      }
     
    }
    merci de m'aider

  2. #2
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    salut,

    De mani�re g�n�rale, les erreurs de type "undefined reference to" sont des erreurs qui surivennent � l'�dition de liens.

    Pour faire simple: le compilateur va uniquement g�n�rer le code binaire ex�cutable de chaque fichier d'impl�mentation (ceux avec l'extension .cpp) qu'on va lui indiquer, et il va s'arr�ter l�. Le r�sultat de ce travail est appel� "fichier objet", et, vu que tu sembles utiliser g++ comme compilateur, leur extension sera sans doute en .o.

    Une fois que tous les fichiers objets auront �t� g�n�r�s, un autre outil appel� "�diteur de liens" va prendre le relais. En gros, il va regrouper l'ensemble des fichiers objets qu'on lui indique dans un ex�cutable final.

    Ce faisant, et parce que tout n'est jamais qu'adresse m�moire dans un ordinateur, il va faire correspondre les appels de fonction qu'il rencontre avec l'adresse � laquelle se trouve le d�but de la fonction appel�e.

    Evidemment, s'il ne trouve pas l'adresse d'une fonction qui est appel�e, il n'aura pas d'autre choix que de s'arr�ter apr�s avoir �mis ce genre de message.

    Dans le cas pr�sent, le nom AES_xxx nous indique qu'il s'agit d'une des fonctions fournies par la biblioth�que openssl. Et, a priori, s'il ne trouve pas une fonction fournie par une "biblioth�que externe" comme openssl, c'est g�n�ralement "tout simplement" parce que l'on ne lui a pas dit d'aller voir dans la biblioth�que en question s'il y trouvait des "fonctions int�ressantes".

    Pour corriger le probl�me, il faut:
    1. indiquer � l'�diteur de liens dans quel dossier il pourra trouver la biblioth�que qui nous int�resse (sans doute libopenssl.a) en rajoutant l'option de compilation -L<chemin_vers_le_dossier> ( � moins que le fichier en question ne soit dans un dossier qui est d�j� connu pour contenir des biblioth�que, bien sur ) et
    2. indiquer � l'�diteur de liens qu'il doit aller voir dans la biblioth�que qui nous int�resse (libopennssl.a, dans le cas pr�sent) en rajoutant l'option de compilation -lopenssl (attention: c'est un L minuscule )

    Bien sur, l'endroit o� il faudra ajouter ces options de compilation d�pendra de ton EDI ou des outils de configuration de projet que tu utilises, car chacun fait � peu pr�s "� sa sauce"... Pour pouvoir t'en dire plus, il faudra que nous sachions de quelle mani�re tu g�res ton projet
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  3. #3
    Membre tr�s actif Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : Chercheur en informatique
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Par d�faut
    effictivment les fichier de la lib etait en .lib et mon compilateur g++ ne prend en charge que les .a alors j'ai bien chercher sur le net pour me procurer le (libcrypto.a et un autre ) mais le proboleme survien toujours,
    alors j'ai essayer de donnee l'adresse de la lib a l'editeur de lien (comme votre explication) mais c'est la que je coince car je ne comprend pas la syntaxe sous dev c++ 5.11 et la documentation pour dev est pluto pauvre sur le net ,
    merci de m'eclaircire sur le sujet .

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    bon, pour ce qui est du .lib, c'est typiquement l'extension utilis�e par les outils microsoft (et d'autres), or, ta chaine de compilation est ... celle que l'on retrouve sous linux (gcc / g++ et ld).

    A priori, tu n'arriveras pas � utiliser openssl.lib avec les outils dont tu disposes. Tu dois donc envisager de... compiler openssl avec ta suite d'outils.

    Manque de pot, pour pouvoir le compiler, il est plus que probable que tu doive envisager l'installation de msys2...

    Tout cela n'est pas trop compliqu� � priori, seulement, �tant donn� que tu me semble heu... quelque peu novice (cela �tant dit sans offence), je vais sans doute te poser une question idiote, mais: as tu vraiment besoin de libopenssl pour ton projet, ou n'est ce que, justement, pour essayer et "voir ce que ca donne" ?
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    Membre tr�s actif Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : Chercheur en informatique
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Par d�faut
    moi mon but est de cree un petit programe qui crypte les fichier qui se trouve dans le meme dossier que lui, alors j'ais chercher dans les lib et j'ai trouver crypto++ qui semble interesnt, mais je trouve pas les lib et dll dans le package telechargable dans le site ,(que les include et des fichier .dat que je ne comprend pas ),alors je me suis tourner sur openssl que je suis entraint d'essayer de resoudre ces probleme de compilation , et si vous avez une suggestion de bibliotheque ou une critique ou solution ,je suis ravie de votre aide ,
    merci.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. probleme avec le compiler
    Par zell61 dans le forum Cobol
    R�ponses: 5
    Dernier message: 09/05/2013, 16h32
  2. Probleme avec PHPmyvisit (compilation php avec GD2 pour utiliser Artichow)
    Par chaoued dans le forum EDI, CMS, Outils, Scripts et API
    R�ponses: 0
    Dernier message: 24/07/2009, 11h28
  3. Probleme avec la compilation
    Par agougeon dans le forum Jasper
    R�ponses: 4
    Dernier message: 16/03/2007, 10h04
  4. Problème avec a.exe, requis pour compiler
    Par jejerome dans le forum KDE
    R�ponses: 4
    Dernier message: 15/04/2006, 23h28
  5. [Borland CPP Compiler] Probleme avec !! Path !!
    Par kanzarih dans le forum Autres �diteurs
    R�ponses: 1
    Dernier message: 20/10/2004, 23h07

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