diff options
Diffstat (limited to 'encrypt.c')
-rw-r--r-- | encrypt.c | 35 |
1 files changed, 22 insertions, 13 deletions
@@ -1,3 +1,10 @@ +/* + * SimpleCrypt + * So simple it's all one function. + * + * Nathan Lasseter (User_4574) + */ + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -6,14 +13,14 @@ int main(int argc, char** argv) { // We need a file to encrypt if (argc != 2) { - fprintf(stderr, "Usage: encrypt <file>"); + fprintf(stderr, "Usage: encrypt <file>\n"); return EXIT_FAILURE; } // Now lets open that file FILE* file = fopen(argv[1], "r"); if (file == NULL) { - fprintf(stderr, "No file specified\n"); + fprintf(stderr, "No such file\n"); return EXIT_FAILURE; } @@ -23,27 +30,26 @@ int main(int argc, char** argv) { printf("Enter Passphrase: "); if (fgets(passphrase, 255, stdin) == NULL) { fclose(file); - fprintf(stderr, "Read error or end of file"); + fprintf(stderr, "Read error or end of file\n"); return EXIT_FAILURE; } } while (strlen(passphrase) <= 0); // And a temporary file to hold the encrypted data - char tpath[] = "SimCr.XXXXXX"; + char tpath[] = ".SimCr.XXXXXX"; int tempfd = mkstemp(tpath); FILE* temp = fdopen(tempfd, "w"); // Now we encrypt! - int passlen = strlen(passphrase) - 1; - int c,j=0; + int passlen = strlen(passphrase) - 2; + int c, d, j = 0; + while ((c=fgetc(file)) != EOF) { - if (j == passlen) { - fputc(c ^ passphrase[0], temp); - j=1; - } else { - fputc(c ^ passphrase[j], temp); - j++; - } + d = c ^ passphrase[j]; + fputc(d, temp); + + if (j == passlen) j=0; + else j++; } // Close the files @@ -51,6 +57,9 @@ int main(int argc, char** argv) { fclose(temp); fclose(file); + // Free used memory + free(passphrase); + // Move the file back if (rename(tpath, argv[1]) != 0) { fprintf(stderr, "Your encrypted file is located in %s.", tpath); |