Code on time pad en C ou java

Fermé
oussa_7 Messages postés 203 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 1 août 2017 - 17 mars 2011 à 18:09
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 17 mars 2011 à 20:36
Bonsoir

svp .... je veux un programme en C ou java qui permet de crypter et decrypter le messsage en utilisent One Time PAD


metrci d'avance
A voir également:

1 réponse

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
Modifié par Hxyp le 17/03/2011 à 20:38
Bonjour,
Tout est expliqué ici : https://fr.wikipedia.org/wiki/Masque_jetable et en fait c'est très simple.
La clé doit être au moins aussi longue que le message et elle doit être aléatoire, dans l'exemple de code ici la clé fait la même taille que le message et j'ai séparé la génération de la clé aléatoire dans une fonction mais on peut la générer en même temps qu'on encrypte le message ça doit faire gagner du temps.
Comme on utilise un xor pour encrypter pas besoin de faire une fonction de décryptage la même fonction fera la même chose :

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <time.h> 

char *onetimepad_cle(char *cle,int taille) 
  { 
    int i; 
    srand(time(NULL)); 
    for(i=0;i<taille;i++) 
        cle[i]=(rand()%256); 
    return cle; 
  } 

char *onetimepad_crypt(char *resultat,const char *text,const char *cle,int taille) 
  { 
    int i; 
    for(i=0;i<taille;i++) 
        resultat[i]=text[i]^cle[i]; 
    return resultat; 
  } 

int main(void) 
  { 
    size_t taille; 
    const char *text; 
    char *cle; 
    char *text_crypte; 

    text="Hello World!"; 
    taille=strlen(text); 
    cle=malloc(sizeof(char)*taille); 
    text_crypte=malloc(sizeof(char)*taille); 

    printf("text en clair : %s\n",text); 
    onetimepad_cle(cle,taille); 
    printf("cle : %s\n",cle); 
    onetimepad_crypt(text_crypte,text,cle,taille); 
    printf("text crypte : %s\n",text_crypte); 
    onetimepad_crypt(text_crypte,text_crypte,cle,taille); 
    printf("text decrypte : %s\n",text_crypte); 

    free(text_crypte); 
    free(cle); 
    return 0; 
  } 
0