- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-
- //By Mat000
-
- int main(int argc, char* argv[])
- {
- char answer[3];
-
- begin:
-
- printf("\n\n(C)rypt or (D)ecrypt ? : ");
- fgets(answer, 2, stdin); //Fonction sécurisée (buffer overflow)
-
- fflush(stdin);
-
- if(answer[0] == 'C' || answer[0] == 'c')
- crypt();
-
- if(answer[0] == 'D' || answer[0] == 'd')
- decrypt();
-
- goto begin;
-
- return 1;
- }
-
- int getstringsum(char* string, int len) //Cette fonction additionne les valeurs ASCII des caractères d'un string entre eux.
- {
- int i, sum = 0;
-
- for(i=0;i<len;i++)
- {
- sum += string[i];
- }
-
- return sum;
- }
-
- int crypt()
- {
- int i, j = 0, k, l;
- FILE* passfile;
- char text[1000] = {'/0'};
- char pass[1000] = {'/0'};
-
- printf("\nText to crypt: ");
- fgets(&text, 1000, stdin);
-
- if(text[0] == '/0')
- return 0;
-
- printf("Now, the password: ");
- fgets(&pass, 1000, stdin);
- if(pass[0] == '/0')
- return 0;
-
- k = strlen(&pass);
- l = strlen(&text);
-
- for(i=0;i<l;i++)
- {
- text[i] += pass[j] + getstringsum(&pass, k); // ici on calcule la phrase de base (ex: "abc123") + le pass ("123") + getstringsum("123") ce qui donne a+1+(1+2+3), b + 2 + (1+2+3), c+3+(1+2+3), 1 + 1+(1+2+3), etc...
- j++;
- if(j == k)
- j = 0;
- }
-
- printf("\nPass crypted : %s\n", text);
-
- passfile = fopen("C:\\passcrypted.txt", "w");
-
- if(passfile == NULL)
- {
- printf("Opening file failed.\n");
- return 0;
- }
-
- fprintf(passfile, "%s", text);
-
- printf("Crypted text written in file.\n");
-
- fclose(passfile);
-
- return 1;
- }
-
- int decrypt()
- {
- int i, j = 0, k, l;
- FILE* passfile;
- char text[1000] = {'/0'};
- char pass[1000] = {'/0'};
-
- printf("\nRetrieving text crypted...\n");
-
- passfile = fopen("C:\\passcrypted.txt", "r");
-
- if(passfile == NULL)
- {
- printf("C:\\passfile.txt doesn't exist.");
- return 0;
- }
-
- fgets(&text, 1000, passfile); //On recupere la phrase cryptée dans le fichier "C:\passfile.txt"
- printf("Text retrieved : %s\n", text);
-
- printf("Then decrypt with the pass : ");
- fgets(&pass, 1000, stdin);
-
- k = strlen(&pass);
- l = strlen(&text);
-
- for(i=0;i<l;i++)
- {
- text[i] -= pass[j] + getstringsum(&pass, k); // Pareil sauf que cette fois on inverse la méthode
- j++;
- if(j == k)
- j = 0;
- }
-
- printf("\nText decrypted : %s\n", text);
-
- fclose(passfile);
-
- return 1;
- }
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//By Mat000
int main(int argc, char* argv[])
{
char answer[3];
begin:
printf("\n\n(C)rypt or (D)ecrypt ? : ");
fgets(answer, 2, stdin); //Fonction sécurisée (buffer overflow)
fflush(stdin);
if(answer[0] == 'C' || answer[0] == 'c')
crypt();
if(answer[0] == 'D' || answer[0] == 'd')
decrypt();
goto begin;
return 1;
}
int getstringsum(char* string, int len) //Cette fonction additionne les valeurs ASCII des caractères d'un string entre eux.
{
int i, sum = 0;
for(i=0;i<len;i++)
{
sum += string[i];
}
return sum;
}
int crypt()
{
int i, j = 0, k, l;
FILE* passfile;
char text[1000] = {'/0'};
char pass[1000] = {'/0'};
printf("\nText to crypt: ");
fgets(&text, 1000, stdin);
if(text[0] == '/0')
return 0;
printf("Now, the password: ");
fgets(&pass, 1000, stdin);
if(pass[0] == '/0')
return 0;
k = strlen(&pass);
l = strlen(&text);
for(i=0;i<l;i++)
{
text[i] += pass[j] + getstringsum(&pass, k); // ici on calcule la phrase de base (ex: "abc123") + le pass ("123") + getstringsum("123") ce qui donne a+1+(1+2+3), b + 2 + (1+2+3), c+3+(1+2+3), 1 + 1+(1+2+3), etc...
j++;
if(j == k)
j = 0;
}
printf("\nPass crypted : %s\n", text);
passfile = fopen("C:\\passcrypted.txt", "w");
if(passfile == NULL)
{
printf("Opening file failed.\n");
return 0;
}
fprintf(passfile, "%s", text);
printf("Crypted text written in file.\n");
fclose(passfile);
return 1;
}
int decrypt()
{
int i, j = 0, k, l;
FILE* passfile;
char text[1000] = {'/0'};
char pass[1000] = {'/0'};
printf("\nRetrieving text crypted...\n");
passfile = fopen("C:\\passcrypted.txt", "r");
if(passfile == NULL)
{
printf("C:\\passfile.txt doesn't exist.");
return 0;
}
fgets(&text, 1000, passfile); //On recupere la phrase cryptée dans le fichier "C:\passfile.txt"
printf("Text retrieved : %s\n", text);
printf("Then decrypt with the pass : ");
fgets(&pass, 1000, stdin);
k = strlen(&pass);
l = strlen(&text);
for(i=0;i<l;i++)
{
text[i] -= pass[j] + getstringsum(&pass, k); // Pareil sauf que cette fois on inverse la méthode
j++;
if(j == k)
j = 0;
}
printf("\nText decrypted : %s\n", text);
fclose(passfile);
return 1;
}