Fix fill polybius
This commit is contained in:
parent
0242ed0256
commit
52769a7985
2
exec.sh
2
exec.sh
@ -1,3 +1,3 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
gcc -Wall src/main.c src/functions.c src/caesar.c src/vigenere.c src/polybius.c -o output/main && ./output/main $1 $2 $3 $4
|
gcc -Wall src/main.c src/functions.c src/caesar.c src/vigenere.c src/polybius.c -o main && ./main $1 $2 $3 $4
|
||||||
|
@ -15,46 +15,30 @@ void cryptPolybius(const char *filename, const char *key){
|
|||||||
/*
|
/*
|
||||||
This function fill the polybius square
|
This function fill the polybius square
|
||||||
*/
|
*/
|
||||||
static void fillSquare(char c, int pos, char polybius[POLYBIUS_SIZE][POLYBIUS_SIZE]){
|
static void fillSquare(int pos, int *posPolybius, char *p, char polybius[POLYBIUS_SIZE][POLYBIUS_SIZE]){
|
||||||
for (int i = 0; i < POLYBIUS_SIZE; i++)
|
for (int i = 0; i < 5; i++){
|
||||||
polybius[pos][i] = c + i;
|
polybius[pos][i] = p[*(posPolybius)];
|
||||||
|
*posPolybius = *posPolybius + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
static int findKeyInSquare(const char *polybius, char c){
|
static int findKeyInSquare(const char *polybius, char c){
|
||||||
for (int i = 0; i < 26; i++)
|
// We exclude the 'J' character
|
||||||
|
for (int i = 0; i < ALPHABET_SIZE - 1; i++)
|
||||||
if (c == polybius[i])
|
if (c == polybius[i])
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
This function generate the polybius square
|
This function generate the polybius square
|
||||||
*/
|
*/
|
||||||
void generateSquarePolybius(char polybius[POLYBIUS_SIZE][POLYBIUS_SIZE], const char *key){
|
void generateSquarePolybius(char polybius[POLYBIUS_SIZE][POLYBIUS_SIZE], const char *key){
|
||||||
char a[26] = {0};
|
char a[ALPHABET_SIZE - 1] = {0}; // The size is 25, we exclude the J character
|
||||||
fillSquare('A', 0, polybius);
|
|
||||||
polybius[1][0] = 'F';
|
|
||||||
polybius[1][1] = 'G';
|
|
||||||
polybius[1][2] = 'H';
|
|
||||||
polybius[1][3] = 'I';
|
|
||||||
polybius[1][4] = 'K';
|
|
||||||
fillSquare('L', 2, polybius);
|
|
||||||
fillSquare('Q', 3, polybius);
|
|
||||||
fillSquare('V', 4, polybius);
|
|
||||||
|
|
||||||
/*
|
|
||||||
char a[26];
|
|
||||||
a[0] = 'A'; a[1] = 'B'; .... a[25] = 'Z';
|
|
||||||
// We add the key into the a array and with a function
|
|
||||||
// and with the function, we check if the character already exist in the array
|
|
||||||
// If yes, we do not add it
|
|
||||||
|
|
||||||
// After that, we convert to the polybius[5][5]
|
|
||||||
*/
|
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
for (int i = 0; i < strlen(key); i++){
|
for (int i = 0; i < strlen(key); i++){
|
||||||
char k;
|
char k;
|
||||||
if (key[i] >= 'a' && key[i] <= 'z')
|
if (key[i] >= 'a' && key[i] <= 'z')
|
||||||
k = key[i] - 32; // 32 = 26 + some characters
|
k = key[i] - 32; // 32 = 26 + special characters
|
||||||
else k = key[i];
|
else k = key[i];
|
||||||
int res = findKeyInSquare(a, k);
|
int res = findKeyInSquare(a, k);
|
||||||
if (res == 0)
|
if (res == 0)
|
||||||
@ -62,17 +46,21 @@ void generateSquarePolybius(char polybius[POLYBIUS_SIZE][POLYBIUS_SIZE], const c
|
|||||||
}
|
}
|
||||||
int n = 0;
|
int n = 0;
|
||||||
int t = pos;
|
int t = pos;
|
||||||
for (int i = pos; i < 26 - pos; i++){
|
for (int i = pos; i < ALPHABET_SIZE + pos; i++){
|
||||||
char c = 'A' + n;
|
char c = 'A' + n;
|
||||||
|
if (c != 'J'){
|
||||||
|
|
||||||
int res = findKeyInSquare(a, c);
|
int res = findKeyInSquare(a, c);
|
||||||
|
|
||||||
if (res == 0){
|
if (res == 0)
|
||||||
a[t++] = c;
|
a[t++] = c;
|
||||||
n++;
|
|
||||||
}
|
}
|
||||||
else printf("Find key: %c\n", c);
|
n++;
|
||||||
//printf("%d\n", n);
|
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 26; i++)
|
pos = 0;
|
||||||
printf("%c\n", a[i]);
|
fillSquare(0, &pos, a, polybius);
|
||||||
|
fillSquare(1, &pos, a, polybius);
|
||||||
|
fillSquare(2, &pos, a, polybius);
|
||||||
|
fillSquare(3, &pos, a, polybius);
|
||||||
|
fillSquare(4, &pos, a, polybius);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define POLYBIUS_SIZE 5
|
#define POLYBIUS_SIZE 5
|
||||||
|
#define ALPHABET_SIZE 26
|
||||||
|
|
||||||
void cryptPolybius(const char *, const char *);
|
void cryptPolybius(const char *, const char *);
|
||||||
void generateSquarePolybius(char polybius[5][5], const char *);
|
void generateSquarePolybius(char polybius[5][5], const char *);
|
||||||
|
Loading…
Reference in New Issue
Block a user