cryptography/vigenere.c
2022-03-11 11:17:55 +01:00

78 lines
1.7 KiB
C

#include "vigenere.h"
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')
matrice[i][j] = pos2++;
else
matrice[i][j] = pos++;
}
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");
}
}