From 133a564a7ba1f57ff229e7c181227d43b4bae584 Mon Sep 17 00:00:00 2001 From: Carlos Maiolino Date: Sat, 6 Sep 2025 11:12:35 +0200 Subject: Create ecat based on a lib archive Signed-off-by: Carlos Maiolino --- C/HF/chap8/src/ecat.c | 29 +++++++++++++++++++++++++++++ C/HF/chap8/src/libs/encrypt.c | 13 +++++++++++++ C/HF/chap8/src/libs/xor.c | 30 ++++++++++++++++++++++++++++++ C/HF/chap8/src/message.c | 13 +++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 C/HF/chap8/src/ecat.c create mode 100644 C/HF/chap8/src/libs/encrypt.c create mode 100644 C/HF/chap8/src/libs/xor.c create mode 100644 C/HF/chap8/src/message.c (limited to 'C/HF/chap8/src') 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 +#include +#include + +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 + +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 +#include + +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 +#include "encrypt.h" + +int main(void) +{ + char msg[80]; + while (fgets(msg, 80, stdin)) { + encrypt(msg); + printf("%s\n", msg); + } + + return 0; +} -- cgit v1.2.3