summaryrefslogtreecommitdiff
path: root/content/projects/python-encryption/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/projects/python-encryption/index.md')
-rw-r--r--content/projects/python-encryption/index.md40
1 files changed, 27 insertions, 13 deletions
diff --git a/content/projects/python-encryption/index.md b/content/projects/python-encryption/index.md
index 95bd3a1..3ed831b 100644
--- a/content/projects/python-encryption/index.md
+++ b/content/projects/python-encryption/index.md
@@ -10,20 +10,34 @@ During my last year of highschool, I designed my very own text encryption
algorithm. I wrote software in python to encode and decode text using a
custom algorithm I made to understand core concepts in information theory.
-I was tasked in the context of one of my classes to carry a project of my
-choosing. This class' goal was mainly to teach students about managing long
-term project when it comes to deadlines, research and organisation. The project
-itself however, didn't matter and could be whatever you dreamed about.
-
-A student wrote a recipe book, another built a potato gun. When it came my turn
-to pick, I decided I wanted to do something related to software development and
-math: A text encryption software utilizing a custom algorithm that I had made.
-Let's be real, the algorithm itself isn't good by any stretch of the
-imagination, but it did force me to understand core concepts of information theory,
-be creative, and develop code where I couldn't rely on libraries with pre-made
-encryption libraries.
-
+The class in which I did this was designed to teach students about managing
+long term projects. People could tackle projects related to just about
+anything. One person wrote and printed a recipe books, another built a small
+soap box cart, someone even built a potato canon. When it came my turn to
+choose, I decided to do something related to programming where I could learn
+things a bit more abstract along the way.
+
+During the research phase of this endeavour, I learned about classic
+cryptography stories such as the ceasar cypher, enigma, symetric and asymetric
+key exchanges. Realizing that some encryption methods could be broken through
+easy non-bruteforce approaches intrigued me. I therefore settled to attempt a
+message encoding method which would be more secure than something such as a
+ceasar cypher. I wanted to build my own algorithm and this is what I came up
+with:
+
+My initial realization was the reality that information can be represented
+through a variety of methods. An image can be stored as one huge integer in
+binary form. Text, encoded in ASCII, was just a list of 255 symbols. When
+viewed from that perspective, an entire article could be thought of as one big
+integer in base255. I decided to start by converting the source message one
+might want to encrypt into decimal form as shown by this animation:
![How the message gets encoded](msg-encode.gif)
+The thing is, if a message can be converted from base255 to decimal, so can
+the password protecting the original message. You would then have both the message
+and the password in a format that feels much more intuitive to manipulate.
+So this is what I did:
+
![How the password gets encoded](psswd-encode.gif)
+