summaryrefslogtreecommitdiff
path: root/C/HF/chap8/src
diff options
context:
space:
mode:
Diffstat (limited to 'C/HF/chap8/src')
-rw-r--r--C/HF/chap8/src/ecat.c29
-rw-r--r--C/HF/chap8/src/libs/encrypt.c13
-rw-r--r--C/HF/chap8/src/libs/xor.c30
-rw-r--r--C/HF/chap8/src/message.c13
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;
+}