#include #include #include #include #include "../inc/vigenere.h" char * message; char * cle; int tailleCle; /* Fonction de chiffrement ou déchiffrement Vigenere Chiffre/Dechifffe le char *message avec la char *cle de taille int tailleCle Si int encode = 1 -> chiffrement, Si int encode = 0 -> dechiffre */ void vigenere(unsigned char *message, unsigned char *cle, int tailleCle, int encode) { int iCle = 0; /* Parcours du message */ for (int iMsg = 0; message[iMsg] != '\0'; iMsg++) { /* Si notre caractère est un caractère alphanumérique */ if(isalpha(message[iMsg])) { char casse, lettreCle; //casse = 'A' si 'A' < message[iMsg] < 'Z' //casse = 'a' si 'a' < message[iMsg] < 'z' casse = (isupper(message[iMsg])) ? 'A' : 'a'; lettreCle = tolower(cle[iCle]) - 'a'; iCle = (iCle + 1) % tailleCle; /* On se ramène à des lettres codées dans [0:26] pour pouvoir appliqué les formules suivantes */ message[iMsg] -= casse; if (encode) message[iMsg] = ((message[iMsg] + lettreCle) % 26+ 26) % 26; // CHIFFREMENT else message[iMsg] = ((message[iMsg] - lettreCle) % 26 + 26) % 26; // DECHIFFREMENT /* On rétablie le code ascii (65 à 90 pour les majuscule, 97 à 122 pour les minuscules) */ message[iMsg] += casse; } } }