Problème retour de valeur (Format Incorrect)
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 :
Code:
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;
} |
J'ai donc le retour [116,101,115,116]
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 :
Code:
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;
}
} |
L'affichage de ma valeur déchiffrée se fait via le code :
Code:
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(":");
} |
Merci d'avance