summary refs log tree commit diff stats
path: root/blog/c
diff options
context:
space:
mode:
authorCrystal <crystal@wizard.tower>2024-03-17 21:46:44 +0100
committerCrystal <crystal@wizard.tower>2024-03-17 21:46:44 +0100
commite8c190c8b2984cd562ba65890ad86213a13b9e72 (patch)
treece0b881ede4f9c8b8b49989db4dc404a0acf4850 /blog/c
parent8347b8d1f799e38d8ce88da706460ccd8aa7f8d3 (diff)
downloadwww-e8c190c8b2984cd562ba65890ad86213a13b9e72.tar.gz
New
Diffstat (limited to 'blog/c')
-rw-r--r--blog/c/cherry.html82
1 files changed, 67 insertions, 15 deletions
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">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2024-03-16 Sat 21:42 -->
+<!-- 2024-03-17 Sun 21:46 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Reviving Caesar with a Cherry-flavored Crystal</title>
@@ -20,17 +20,17 @@
  <a accesskey="H" href="https://crystal.tilde.institute/"> HOME </a>
 </div><div id="content" class="content">
 <h1 class="title">Reviving Caesar with a Cherry-flavored Crystal</h1>
-<div id="outline-container-org394c654" class="outline-2">
-<h2 id="org394c654">What ?&#x2026;</h2>
-<div class="outline-text-2" id="text-org394c654">
+<div id="outline-container-org0bff230" class="outline-2">
+<h2 id="org0bff230">What ?&#x2026;</h2>
+<div class="outline-text-2" id="text-org0bff230">
 <p>
 That is probably your reaction reading this title, and no, this isn&rsquo;t a randomly generated sentence, but rather a simple encryption algorithm I recently made (Actually the first encryption algorithm i make at all!!). Meet <b>Cherry-Crystal Encryption</b>.
 </p>
 </div>
 </div>
-<div id="outline-container-org5a46ff7" class="outline-2">
-<h2 id="org5a46ff7">Okay so, what is this all about ?</h2>
-<div class="outline-text-2" id="text-org5a46ff7">
+<div id="outline-container-org4770304" class="outline-2">
+<h2 id="org4770304">Okay so, what is this all about ?</h2>
+<div class="outline-text-2" id="text-org4770304">
 <p>
 This encryption Algorithm that we will call <b>CCE</b> for short, takes inspiration from the Caesar cipher which needn&rsquo;t an introduction (you can find great explanations online). But what about mine you might ask ?
 </p>
@@ -44,15 +44,15 @@ This encryption Algorithm that we will call <b>CCE</b> for short, takes inspirat
 </ul>
 </div>
 </div>
-<div id="outline-container-org9e305ea" class="outline-2">
-<h2 id="org9e305ea">The Code :</h2>
-<div class="outline-text-2" id="text-org9e305ea">
+<div id="outline-container-org4496ca5" class="outline-2">
+<h2 id="org4496ca5">The Code :</h2>
+<div class="outline-text-2" id="text-org4496ca5">
 <div class="org-src-container">
 <pre class="src src-c"><span style="color: #f9e2af;">#include</span> <span style="color: #f38ba8;">&lt;</span><span style="color: #a6e3a1;">stdio.h</span><span style="color: #f38ba8;">&gt;</span>
 <span style="color: #f9e2af;">#include</span> <span style="color: #f38ba8;">&lt;</span><span style="color: #a6e3a1;">stdlib.h</span><span style="color: #f38ba8;">&gt;</span>
 <span style="color: #f9e2af;">#include</span> <span style="color: #f38ba8;">&lt;</span><span style="color: #a6e3a1;">string.h</span><span style="color: #f38ba8;">&gt;</span>
 
-<span style="color: #f9e2af;">void</span> <span style="color: #89b4fa;">encrypt</span><span style="color: #f38ba8;">(</span><span style="color: #f9e2af;">char</span> <span style="color: #cdd6f4;">cherry</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">char</span> <span style="color: #cdd6f4;">crystal</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">int</span> <span style="color: #cdd6f4;">mask</span><span style="color: #fab387;">[]</span><span style="color: #f38ba8;">)</span> <span style="color: #f38ba8;">{</span>
+<span style="color: #f9e2af;">void</span> <span style="color: #89b4fa;">sloth</span><span style="color: #f38ba8;">(</span><span style="color: #f9e2af;">char</span> <span style="color: #cdd6f4;">cherry</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">char</span> <span style="color: #cdd6f4;">crystal</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">int</span> <span style="color: #cdd6f4;">mask</span><span style="color: #fab387;">[]</span><span style="color: #f38ba8;">)</span> <span style="color: #f38ba8;">{</span>
   <span style="color: #f9e2af;">int</span> <span style="color: #cdd6f4;">i</span>;
   <span style="color: #cba6f7;">for</span> <span style="color: #fab387;">(</span>i = <span style="color: #fab387;">0</span>; i &lt; strlen<span style="color: #f9e2af;">(</span>cherry<span style="color: #f9e2af;">)</span> - <span style="color: #fab387;">1</span>; i++<span style="color: #fab387;">)</span> <span style="color: #fab387;">{</span>
     mask<span style="color: #f9e2af;">[</span>i<span style="color: #f9e2af;">]</span> = cherry<span style="color: #f9e2af;">[</span>i<span style="color: #f9e2af;">]</span> - crystal<span style="color: #f9e2af;">[</span>i<span style="color: #f9e2af;">]</span>;
@@ -61,7 +61,7 @@ This encryption Algorithm that we will call <b>CCE</b> for short, takes inspirat
     mask<span style="color: #f9e2af;">[</span>i<span style="color: #f9e2af;">]</span> = crystal<span style="color: #f9e2af;">[</span>i<span style="color: #f9e2af;">]</span>;
   <span style="color: #fab387;">}</span>
 <span style="color: #f38ba8;">}</span>
-<span style="color: #f9e2af;">void</span> <span style="color: #89b4fa;">decrypt</span><span style="color: #f38ba8;">(</span><span style="color: #f9e2af;">char</span> <span style="color: #cdd6f4;">cherry</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">char</span> <span style="color: #cdd6f4;">crystal</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">int</span> <span style="color: #cdd6f4;">mask</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">int</span> <span style="color: #cdd6f4;">length</span><span style="color: #f38ba8;">)</span> <span style="color: #f38ba8;">{</span>
+<span style="color: #f9e2af;">void</span> <span style="color: #89b4fa;">moon</span><span style="color: #f38ba8;">(</span><span style="color: #f9e2af;">char</span> <span style="color: #cdd6f4;">cherry</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">char</span> <span style="color: #cdd6f4;">crystal</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">int</span> <span style="color: #cdd6f4;">mask</span><span style="color: #fab387;">[]</span>, <span style="color: #f9e2af;">int</span> <span style="color: #cdd6f4;">length</span><span style="color: #f38ba8;">)</span> <span style="color: #f38ba8;">{</span>
   <span style="color: #f9e2af;">int</span> <span style="color: #cdd6f4;">i</span>, <span style="color: #cdd6f4;">end</span> = <span style="color: #fab387;">1</span>;
   <span style="color: #cba6f7;">for</span> <span style="color: #fab387;">(</span>i = <span style="color: #fab387;">0</span>; i &lt; length; i++<span style="color: #fab387;">)</span> <span style="color: #fab387;">{</span>
     <span style="color: #cba6f7;">if</span> <span style="color: #f9e2af;">(</span>i == strlen<span style="color: #a6e3a1;">(</span>cherry<span style="color: #a6e3a1;">)</span> - <span style="color: #fab387;">1</span> || end == <span style="color: #fab387;">0</span><span style="color: #f9e2af;">)</span> <span style="color: #f9e2af;">{</span>
@@ -81,7 +81,7 @@ This encryption Algorithm that we will call <b>CCE</b> for short, takes inspirat
   fgets<span style="color: #fab387;">(</span>cherry, size, stdin<span style="color: #fab387;">)</span>;
   puts<span style="color: #fab387;">(</span><span style="color: #a6e3a1;">"Enter the Crystal: "</span><span style="color: #fab387;">)</span>;
   fgets<span style="color: #fab387;">(</span>crystal, size, stdin<span style="color: #fab387;">)</span>;
-  encrypt<span style="color: #fab387;">(</span>cherry, crystal, mask<span style="color: #fab387;">)</span>;
+  sloth<span style="color: #fab387;">(</span>cherry, crystal, mask<span style="color: #fab387;">)</span>;
   <span style="color: #cba6f7;">for</span> <span style="color: #fab387;">(</span>i = <span style="color: #fab387;">0</span>; i &lt; strlen<span style="color: #f9e2af;">(</span>crystal<span style="color: #f9e2af;">)</span> - <span style="color: #fab387;">1</span>; i++<span style="color: #fab387;">)</span> <span style="color: #fab387;">{</span>
     printf<span style="color: #f9e2af;">(</span><span style="color: #a6e3a1;">"%d "</span>, mask<span style="color: #a6e3a1;">[</span>i<span style="color: #a6e3a1;">]</span><span style="color: #f9e2af;">)</span>;
     length++;
@@ -97,7 +97,7 @@ This encryption Algorithm that we will call <b>CCE</b> for short, takes inspirat
     scanf<span style="color: #f9e2af;">(</span><span style="color: #a6e3a1;">"%d"</span>, &amp;mask2<span style="color: #a6e3a1;">[</span>i<span style="color: #a6e3a1;">]</span><span style="color: #f9e2af;">)</span>;
   <span style="color: #fab387;">}</span>
   puts<span style="color: #fab387;">(</span><span style="color: #a6e3a1;">"The Crystal is: "</span><span style="color: #fab387;">)</span>;
-  decrypt<span style="color: #fab387;">(</span>cherry2, crystal2, mask2, length<span style="color: #fab387;">)</span>;
+  moon<span style="color: #fab387;">(</span>cherry2, crystal2, mask2, length<span style="color: #fab387;">)</span>;
   puts<span style="color: #fab387;">(</span>crystal2<span style="color: #fab387;">)</span>;
   <span style="color: #cba6f7;">return</span> <span style="color: #fab387;">0</span>;
 <span style="color: #f38ba8;">}</span>
@@ -110,10 +110,62 @@ The program has been tested both on Alpine OS with Musl libc (thanks <a href="ht
 </p>
 </div>
 </div>
+<div id="outline-container-org6c3305a" class="outline-2">
+<h2 id="org6c3305a">How does it work ?</h2>
+<div class="outline-text-2" id="text-org6c3305a">
+</div>
+<div id="outline-container-orgf462a7c" class="outline-3">
+<h3 id="orgf462a7c">Slothing (Encrypting) 🦥:</h3>
+<div class="outline-text-3" id="text-orgf462a7c">
+<p>
+<del>What is it with these names I pick ?</del> Anyways, the <b>sloth(char *cherry, char *crystal, int *mask)</b> void function takes as parameters three variables:
+</p>
+
+<ul class="org-ul">
+<li>A pointer to a <b>char array</b> or simply said <b>a string</b>, It&rsquo;s the <b>Cherry</b>.</li>
+<li>Another pointer to the <b>Crystal</b>.</li>
+<li>And Finally, a pointer to an array of integers <b>The Mask</b> which will be output-ed by the function.</li>
+</ul>
+
+
+<p>
+The general idea of it is like this : (we will use a quick example)
+</p>
+
+<ul class="org-ul">
+<li><b>Cherry</b>:  H e l l o \0.</li>
+<li><b>Crystal</b>: W o r l d \0.</li>
+<li>Cherry[0] here is <b>H</b>, or in ASCII <b>72</b>. And Crystal[0] is <b>W</b> or <b>87</b>.</li>
+<li>Mask[0] in this case is : Cherry[0] - Crystal[0]. which is <b>-15</b>. We then repeat the same steps for each letter on the <b>Crystal</b>.</li>
+</ul>
+
+<p>
+Why the emphasis on <b>Crystal</b> ? Because we might end up with a case of a Crystal larger than a Cherry. we set the offset to the ASCII value of <b>Crystal[i]</b>, okay which to be fair is not the safest option out there, but I&rsquo;m planning on fixing it sooner or later. In the case of a large Cherry but a small Crystal&#x2026;it works but now looking at the code, i have no idea why it works the intended way&#x2026;.
+</p>
+</div>
+</div>
+<div id="outline-container-org7cb73ea" class="outline-3">
+<h3 id="org7cb73ea">Mooning (Decrypting) 🌕:</h3>
+<div class="outline-text-3" id="text-org7cb73ea">
+<p>
+The function <b>moon(char *cherry, char *crystal, int *mask, int length)</b> works the same way as the sloth function, but in reverse and a small change.
+</p>
+
+<ul class="org-ul">
+<li><b>The for loop goes through all the elements of the Mask and reconstructing the Crystal using the reverse equation of the encryption</b>. But when it arrives at the end of the <b>Cherry</b> (here we enter the case of a Cherry smaller than a Crystal). Then we will just assume that <b>Mask[i]</b> is the ASCII code of <b>Crystal[i]</b>, and we continue this assumption until the end of the loop.</li>
+</ul>
+
+
+<p>
+And voila that&rsquo;s it. Of course there might be some things I will change, but the overall concept is here!
+</p>
+</div>
+</div>
+</div>
 </div>
 <div id="postamble" class="status">
 <p class="author">Author: Crystal &amp; Sloth</p>
-<p class="date">Created: 2024-03-16 Sat 21:42</p>
+<p class="date">Created: 2024-03-17 Sun 21:46</p>
 </div>
 </body>
 </html>