diff options
Diffstat (limited to 'C/HF/chap8/src')
| -rw-r--r-- | C/HF/chap8/src/ecat.c | 29 | ||||
| -rw-r--r-- | C/HF/chap8/src/libs/encrypt.c | 13 | ||||
| -rw-r--r-- | C/HF/chap8/src/libs/xor.c | 30 | ||||
| -rw-r--r-- | C/HF/chap8/src/message.c | 13 |
4 files changed, 85 insertions, 0 deletions
diff --git a/C/HF/chap8/src/ecat.c b/C/HF/chap8/src/ecat.c new file mode 100644 index 0000000..9be8a47 --- /dev/null +++ b/C/HF/chap8/src/ecat.c @@ -0,0 +1,29 @@ +#include <stdio.h> +#include <libs/xor.h> +#include <libs/encrypt.h> + +int main(int argc, char **argv) +{ + FILE *fd; + char buf[80]; + + char f = '\0'; + + encrypt_arr_t fn_arr = {xor16, xor42, xor64}; + if (argc != 2) + return 1; + + printf("Arr size: %ld\n", sizeof(fn_arr) / sizeof(*fn_arr)); + fd = fopen(argv[1], "r"); + + while (fgets(buf, 80, fd)) { + encrypt_arr(buf, fn_arr, 3); + printf("encrypted message: '%s'", buf); + } + + printf("\n"); + + printf("%c", (char)(f ^ 16 ^ 42 ^ 64)); + fclose(fd); + return 0; +} diff --git a/C/HF/chap8/src/libs/encrypt.c b/C/HF/chap8/src/libs/encrypt.c new file mode 100644 index 0000000..d894cfc --- /dev/null +++ b/C/HF/chap8/src/libs/encrypt.c @@ -0,0 +1,13 @@ +#include <libs/encrypt.h> + +void encrypt(char *message, encrypt_fn_t encrypt_fn) { + encrypt_fn(message); +} + +void encrypt_arr(char *message, encrypt_arr_t fn_arr, int size) +{ + int i; + + for (i = 0; i < size; i++) + encrypt(message, fn_arr[i]); +} diff --git a/C/HF/chap8/src/libs/xor.c b/C/HF/chap8/src/libs/xor.c new file mode 100644 index 0000000..30286e7 --- /dev/null +++ b/C/HF/chap8/src/libs/xor.c @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <libs/xor.h> + +void xor16(char *message) +{ + printf("Orig: %s\n", message); + while (*message) { + *message = *message ^ 16; + message++; + } +} + +void xor42(char *message) +{ + printf("Orig: %s\n", message); + while (*message) { + *message = *message ^ 42; + message++; + } +} + +void xor64(char *message) +{ + printf("Orig: %s\n", message); + while (*message) { + *message = *message ^ 64; + message++; + } +} + diff --git a/C/HF/chap8/src/message.c b/C/HF/chap8/src/message.c new file mode 100644 index 0000000..345774c --- /dev/null +++ b/C/HF/chap8/src/message.c @@ -0,0 +1,13 @@ +#include <stdio.h> +#include "encrypt.h" + +int main(void) +{ + char msg[80]; + while (fgets(msg, 80, stdin)) { + encrypt(msg); + printf("%s\n", msg); + } + + return 0; +} |
