diff options
Diffstat (limited to 'encrypt.c')
-rw-r--r-- | encrypt.c | 33 |
1 files changed, 26 insertions, 7 deletions
@@ -3,7 +3,18 @@ #include <string.h> #include <unistd.h> +void sanitise(char *x) { + char *curpos = x; + while (*x != '\0') { + *curpos = *x; + x++; + if (*curpos != '/') curpos++; + } + *curpos = '\0'; +} + int main(int argc, char** argv) { + char * junk; /* We need a file to encrypt */ if(argc==1) { fprintf(stderr, "Arguments fool!"); @@ -13,21 +24,26 @@ int main(int argc, char** argv) { FILE* file = fopen(argv[1], "r"); /* And a temporary file to hold the encrypted data */ char tpath[255] = "/tmp/"; + sanitise(argv[1]); strcat(tpath, argv[1]); FILE* temp = fopen(tpath, "w"); - /* Now we need the passphrase. Get it */ - printf("Enter Passphrase:\n"); + char passphrase[255]; - fgets(passphrase, 255, stdin); + do { + /* Now we need the passphrase. Get it */ + printf("Enter Passphrase:\n"); + junk = fgets(passphrase, 255, stdin); + } while (strlen(passphrase) <= 0); + int passlen = strlen(passphrase) - 1; int c,j=0; /* Now we encrypt! */ while((c=fgetc(file)) != EOF) { if(j==passlen) { - fputc(c+passphrase[0], temp); + fputc(c ^ passphrase[0], temp); j=1; } else { - fputc(c+passphrase[j], temp); + fputc(c ^ passphrase[j], temp); j++; } } @@ -38,7 +54,10 @@ int main(int argc, char** argv) { /* Move the file back */ char cmd[255]; sprintf(cmd, "%s %s %s", "/bin/mv", tpath, argv[1]); - system(cmd); - return 0; + if (system(cmd) != 0) { + fprintf(stderr, "Your encrypted file is located in %s.", tpath); + return EXIT_FAILURE; + } + return EXIT_SUCCESS; } |