Bonjour,
Je suis actuellement en train de mettre en place un chiffrement RSA avec pour le moment des valeurs par défaut valides pour les différentes variables nécessaires.
Pour se faire, je converti une chaine de caractère lettre par lettre en code ASCII puis stocke le résultat dans un tableau de long. Je passe sur ce tableau afin de chiffrer chaque bout via RSA et je repasse ensuite pour le déchiffrer.
Prenons pour exemple le texte : test
Je le converti en ASCII via la fonction suivante :
J'ai donc le retour [116,101,115,116]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 long *StringToAscii(char * string){ long *asciiTab = malloc(sizeof(long)*strlen(string)); for (int i = 0; i < (long)strlen(string); i++) { asciiTab[i] = string[i]; } return asciiTab; }
Je le chiffre via RSA, je vous épargne tout le code. mais le résultat donne :
[115,98,116,115]
Cela n'est pas impressionnant du fait de prise de valeurs minimales pour les clés publique / privée
Le problème est que quand je déchiffre ce code, il me retourne l'emplacement dans l'alphabet de la lettre. A savoir pour test 20,5,19,20
J'aimerais qu'il me retourne soit l'ASCII de départ du mot test ou simplement le mot test.
Sachant que je déchiffre avec la fonction suivante :
L'affichage de ma valeur déchiffrée se fait via le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 long DecryptASCII(long d, long n, long encrypted) { //Prevoir changement de la constante du tableau ASCII de int vers long long decrypted; //Operation de chiffrement decrypted = (encrypted^d)%n; //printf("Le String du cryptee \n\n%s", encrypted); return decrypted; } }
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 printf("\n\nSTRING DECRYPTED ASCII TAB: "); for (int i = 0; i < (long)strlen(charTab); i++) { decryptionTab[i] = DecryptASCII(priKey.d,priKey.n ,encryptionTab[i]); printf("%ld", decryptionTab[i]); if (i < ((long)strlen(charTab)) - 1) printf(":"); }
Partager