From e8c190c8b2984cd562ba65890ad86213a13b9e72 Mon Sep 17 00:00:00 2001 From: Crystal Date: Sun, 17 Mar 2024 21:46:44 +0100 Subject: New --- blog/c/cherry.html | 82 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 15 deletions(-) (limited to 'blog/c/cherry.html') diff --git a/blog/c/cherry.html b/blog/c/cherry.html index 9b5da84..e2d9221 100644 --- a/blog/c/cherry.html +++ b/blog/c/cherry.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Reviving Caesar with a Cherry-flavored Crystal @@ -20,17 +20,17 @@ HOME

Reviving Caesar with a Cherry-flavored Crystal

-
-

What ?…

-
+
+

What ?…

+

That is probably your reaction reading this title, and no, this isn’t a randomly generated sentence, but rather a simple encryption algorithm I recently made (Actually the first encryption algorithm i make at all!!). Meet Cherry-Crystal Encryption.

-
-

Okay so, what is this all about ?

-
+
+

Okay so, what is this all about ?

+

This encryption Algorithm that we will call CCE for short, takes inspiration from the Caesar cipher which needn’t an introduction (you can find great explanations online). But what about mine you might ask ?

@@ -44,15 +44,15 @@ This encryption Algorithm that we will call CCE for short, takes inspirat
-
-

The Code :

-
+
+

The Code :

+
#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-void encrypt(char cherry[], char crystal[], int mask[]) {
+void sloth(char cherry[], char crystal[], int mask[]) {
   int i;
   for (i = 0; i < strlen(cherry) - 1; i++) {
     mask[i] = cherry[i] - crystal[i];
@@ -61,7 +61,7 @@ This encryption Algorithm that we will call CCE for short, takes inspirat
     mask[i] = crystal[i];
   }
 }
-void decrypt(char cherry[], char crystal[], int mask[], int length) {
+void moon(char cherry[], char crystal[], int mask[], int length) {
   int i, end = 1;
   for (i = 0; i < length; i++) {
     if (i == strlen(cherry) - 1 || end == 0) {
@@ -81,7 +81,7 @@ This encryption Algorithm that we will call CCE for short, takes inspirat
   fgets(cherry, size, stdin);
   puts("Enter the Crystal: ");
   fgets(crystal, size, stdin);
-  encrypt(cherry, crystal, mask);
+  sloth(cherry, crystal, mask);
   for (i = 0; i < strlen(crystal) - 1; i++) {
     printf("%d ", mask[i]);
     length++;
@@ -97,7 +97,7 @@ This encryption Algorithm that we will call CCE for short, takes inspirat
     scanf("%d", &mask2[i]);
   }
   puts("The Crystal is: ");
-  decrypt(cherry2, crystal2, mask2, length);
+  moon(cherry2, crystal2, mask2, length);
   puts(crystal2);
   return 0;
 }
@@ -110,10 +110,62 @@ The program has been tested both on Alpine OS with Musl libc (thanks 
+

How does it work ?

+
+
+
+

Slothing (Encrypting) 🦥:

+
+

+What is it with these names I pick ? Anyways, the sloth(char *cherry, char *crystal, int *mask) void function takes as parameters three variables: +

+ +
    +
  • A pointer to a char array or simply said a string, It’s the Cherry.
  • +
  • Another pointer to the Crystal.
  • +
  • And Finally, a pointer to an array of integers The Mask which will be output-ed by the function.
  • +
+ + +

+The general idea of it is like this : (we will use a quick example) +

+ +
    +
  • Cherry: H e l l o \0.
  • +
  • Crystal: W o r l d \0.
  • +
  • Cherry[0] here is H, or in ASCII 72. And Crystal[0] is W or 87.
  • +
  • Mask[0] in this case is : Cherry[0] - Crystal[0]. which is -15. We then repeat the same steps for each letter on the Crystal.
  • +
+ +

+Why the emphasis on Crystal ? Because we might end up with a case of a Crystal larger than a Cherry. we set the offset to the ASCII value of Crystal[i], okay which to be fair is not the safest option out there, but I’m planning on fixing it sooner or later. In the case of a large Cherry but a small Crystal…it works but now looking at the code, i have no idea why it works the intended way…. +

+
+
+
+

Mooning (Decrypting) 🌕:

+
+

+The function moon(char *cherry, char *crystal, int *mask, int length) works the same way as the sloth function, but in reverse and a small change. +

+ +
    +
  • The for loop goes through all the elements of the Mask and reconstructing the Crystal using the reverse equation of the encryption. But when it arrives at the end of the Cherry (here we enter the case of a Cherry smaller than a Crystal). Then we will just assume that Mask[i] is the ASCII code of Crystal[i], and we continue this assumption until the end of the loop.
  • +
+ + +

+And voila that’s it. Of course there might be some things I will change, but the overall concept is here! +

+
+
+

Author: Crystal & Sloth

-

Created: 2024-03-16 Sat 21:42

+

Created: 2024-03-17 Sun 21:46

-- cgit 1.4.1-2-gfad0