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

Bibliothèques, systèmes et outils C Discussion :

decrypter message avec aes


Sujet :

Bibliothèques, systèmes et outils C

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mai 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2015
    Messages : 51
    Points : 32
    Points
    32
    Par défaut decrypter message avec aes
    Bonjour,
    je dois écrire un programme qui permet à deux processus de communiquer en utilisant les tubes nommés.Le message envoyé par le premier processus doit etre chiffré en utilisant aes et doit etre décrypté par le second processsus.
    Le cryptage marche, mais le décryptage ne marche pas.
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <string.h>
    #include <openssl/aes.h>
    #include <openssl/rand.h>
    #include <fcntl.h>
     
     
     
     
     
    void fils(int fd, unsigned char aes_key[],  int keylength,AES_KEY key,const size_t encslength,unsigned char iv_dec[]){
      unsigned char chaineAlire[8];
      read(fd,&chaineAlire, 8);
      unsigned char dec_out[8];
      memset(dec_out, 0, sizeof(dec_out));
     
      AES_set_decrypt_key(aes_key, keylength, &key);
      AES_DECRYPT);
      AES_cbc_encrypt(chaineAlire, dec_out, 8, &key, iv_dec, AES_DECRYPT);
      printf("message lu\t");
      printf("%s\n", dec_out);
      exit(EXIT_SUCCESS);
     
    }
     
    int main(int argc,char* argv[])
    {
      int fd,f;
     
      int keylength=128;
      unsigned char aes_key[keylength/8];
      memset(aes_key, 0, keylength/8);
      if (!RAND_bytes(aes_key, keylength/8))
          exit(-1);
     
      size_t inputslength = 8;
      unsigned char aes_input[8]="bonjour";
      unsigned char iv_enc[AES_BLOCK_SIZE], iv_dec[AES_BLOCK_SIZE];
      RAND_bytes(iv_enc, AES_BLOCK_SIZE);
      memcpy(iv_dec, iv_enc, AES_BLOCK_SIZE);
      const size_t encslength = ((inputslength + AES_BLOCK_SIZE) / AES_BLOCK_SIZE) * AES_BLOCK_SIZE;
      unsigned char enc_out[encslength];
      unsigned char dec_out[inputslength];
      memset(enc_out, 0, sizeof(enc_out));
      memset(dec_out, 0, sizeof(dec_out));
      AES_KEY key;
      AES_set_encrypt_key(aes_key, keylength, &key);
      AES_cbc_encrypt(aes_input, enc_out, inputslength, &key, iv_enc, AES_ENCRYPT);
     
     
      if(mkfifo("essai", S_IRUSR|S_IWUSR) != 0)
        {
            perror( "Impossible de créer le tube nomme.\n");
     
            exit(EXIT_FAILURE);
        }
     
        if((fd= open("essai", O_RDWR)) == -1)
        {
            printf("Impossible d'ouvrir l'entrée du tube nomme.\n");
            exit(EXIT_FAILURE);
        }
     f=fork();
      if(f!=0){
        write(fd, &enc_out, 8);
            printf("message envoye:\t");
            printf("%s\n",aes_input );
            printf("message crypte:\t");
              hex_print(enc_out, sizeof(enc_out));
     
      }
    if(f==0){
        fils(fd,aes_key,keylength,key,encslength,iv_dec);
     
    }
    close(fd);
     
    return EXIT_SUCCESS;
    }

  2. #2
    Expert confirmé
    Inscrit en
    mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Il me semble qu'il y a du padding à prendre en compte en AES pour correspondre à la taille de bloc. Essaie avec un buffer de 16 octets.


    Citation Envoyé par magyy Voir le message
    mais le décryptage ne marche pas.
    « Cela ne marche pas » n'a aucun sens pour tes interlocuteurs. Fais un effort de présentation.

Discussions similaires

  1. Crypter et decrypter un fichier avec AES
    Par MarsOran dans le forum Sécurité
    Réponses: 9
    Dernier message: 24/01/2013, 15h20
  2. PB multi envoie message avec indy 10 sous D9
    Par korntex5 dans le forum Web & réseau
    Réponses: 1
    Dernier message: 13/07/2005, 14h27
  3. Poster un message avec un CString en parametre
    Par loupdeau dans le forum MFC
    Réponses: 2
    Dernier message: 19/05/2005, 15h02
  4. Message avec un bouton "oui" et "non"
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2004, 15h50

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