diff --git a/main b/main index 05c3253..9baa1ae 100755 Binary files a/main and b/main differ diff --git a/main.c b/main.c index 9684e1c..ec3f9f5 100755 --- a/main.c +++ b/main.c @@ -81,19 +81,19 @@ int main(int argc, char *argv[]) { }while(key < 1 || key > 26); if(strcmp(hook, "crypt") == 0) - error = cryptCesar(argv[3], key, numberCharacters, buffer); + error = cryptCesar(fileSrc, key, numberCharacters, buffer); if(strcmp(hook, "decrypt") == 0) - error = decryptCesar(argv[3], key, numberCharacters, buffer); - + error = decryptCesar(fileSrc, key, numberCharacters, buffer); } else if(strcmp(argv[1], "-v") == 0){ // Get key char *key = malloc(8); printf("Your key: "); scanf("%s", key); - + + if(strcmp(hook, "crypt") == 0) - error = cryptVigenere(key, argv[3], buffer); + error = cryptVigenere(key, fileSrc, numberCharacters, buffer); free(key); } diff --git a/vigenere.c b/vigenere.c index ba097d2..5b6131f 100644 --- a/vigenere.c +++ b/vigenere.c @@ -1,18 +1,64 @@ #include "vigenere.h" -int cryptVigenere(const char *key, const char *data, char *bufferDst) { +int cryptVigenere(const char *key, const char *fileSrc, const int numberCharacters, char *bufferDst) { int error = 0; char matrice[SIZE_MATRICE_VIGENERE][SIZE_MATRICE_VIGENERE]; + char *data = malloc(sizeof(char) * numberCharacters); + char *dataVigenere = NULL; + char c = 0; + int pos = 0; + size_t i, j = 0; + size_t keyLength = strlen(key); // Init the Vigenere matrice matriceVigenere(matrice); + if (data == NULL) return -1; + memset(data, 0, numberCharacters); + + error = copyFile(fileSrc, data); + + dataVigenere = malloc(strlen(data)); + if (dataVigenere == NULL) return -1; + + memset(dataVigenere, 0, numberCharacters); + + // Fill the dataVigenere with the key + for (i = 0; i < strlen(data); i++){ + if (data[i] == '\n' || data[i] == ' ') + dataVigenere[i] = data[i]; + else + dataVigenere[i] = key[j++]; + + if (j == keyLength) + j = 0; + } + dataVigenere[pos - 1] = '\0'; + + printf("%s\n", data); + printf("%s\n", dataVigenere); + /*do { + c = data[pos++]; + printf("%c", c); + if (c == '\n') {} + }while (c != '\0');*/ + + /* Encrypt the data */ + /*for (i = 0; i < strlen(data); i++) { + printf("%c", matrice[data[i]][dataVigenere[i]]); + }*/ + + free(dataVigenere); + free(data); return error; } void matriceVigenere(char matrice[][SIZE_MATRICE_VIGENERE]) { int i, j = 0; char pos, pos2 = 'A'; + //for (i = 0; i < SIZE_MATRICE_VIGENERE; i++) + // matrice[0][i] = 'A' + i; + for (i = 0; i < SIZE_MATRICE_VIGENERE; i++) { for (j = 0; j < SIZE_MATRICE_VIGENERE; j++) { if (pos > 'Z') @@ -23,4 +69,9 @@ void matriceVigenere(char matrice[][SIZE_MATRICE_VIGENERE]) { pos = 'B' + i; pos2 = 'A'; } + for (i = 0; i < SIZE_MATRICE_VIGENERE; i++) { + for (j = 0; j < SIZE_MATRICE_VIGENERE; j++) + printf("%c ", matrice[i][j]); + printf("f\n"); + } } diff --git a/vigenere.h b/vigenere.h index 8f8e0b8..9439e6c 100644 --- a/vigenere.h +++ b/vigenere.h @@ -4,7 +4,7 @@ #include "functions.h" #define SIZE_MATRICE_VIGENERE 26 -int cryptVigenere(const char *key, const char *data, char *bufferDst); +int cryptVigenere(const char *key, const char *fileSrc, const int numberCharacters, char *bufferDst); void matriceVigenere(char matrice[][SIZE_MATRICE_VIGENERE]); #endif