Code on time pad en C ou java

oussa_7 Messages postés 203 Date d'inscription   Statut Membre Dernière intervention   -  
Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   54
 
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