Evo ja sam sastavio mali command line program, dosta je jednostavan tako da ne bi trebao imati problema da ga modifikujes.
Code:
#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE 1024
void encrypt(FILE *fp_in, FILE *fp_out, char *key, int len) {
char buffer[BUFFER_SIZE+1];
int i,j=-1,n;
while (!feof(fp_in)) {
n = fread(buffer,1, BUFFER_SIZE,fp_in);
for (i=0; i<n; i++)
buffer[i] += key[++j%len];
fwrite(buffer,1, n, fp_out);
}
printf("Encrypting finished.\n");
}
void decrypt(FILE *fp_in, FILE *fp_out, char *key, int len) {
char buffer[BUFFER_SIZE+1];
int i,j=-1,n;
while (!feof(fp_in)) {
n = fread(buffer,1, BUFFER_SIZE,fp_in);
for (i=0; i<n; i++)
buffer[i] -= key[++j%len];
fwrite(buffer,1, n, fp_out);
}
printf("Decrypting finished.\n");
}
/*
arguments: 0 - program name, 1 - password, 2 - flag (-[e/d]), 3 - input file, 4 - output file
*/
int main(int argc, char *argv[]) {
FILE *fp_in, *fp_out;
if (argc != 5) {
printf("Invalid argument number!\n");
printf("Syntax: encrypt [password] [-e/-d] [input file] [output file]\n");
printf ("made by Ivan\n");
}
else if (!strcmp(argv[2],"-e") && (fp_in = fopen(argv[3],"r")) && (fp_out = fopen(argv[4], "w")) ) {
encrypt(fp_in,fp_out,argv[1],strlen(argv[1]));
fclose(fp_in);
fclose(fp_out);
}
else if (!strcmp(argv[2],"-d") && (fp_in = fopen(argv[3],"r")) && (fp_out = fopen(argv[4], "w")) ) {
decrypt(fp_in,fp_out,argv[1],strlen(argv[1]));
fclose(fp_in);
fclose(fp_out);
}
return 0;
}
Algoritam za šifrovanje je veoma jednostavan, na svaki procitani bajt se dodaje po jedan karakter iz passworda, kada se dodje do kraja, dodaje se opet prvi.