From fd2de4e488e01fd84d877ceabbd9f0f984d93174 Mon Sep 17 00:00:00 2001
From: Holden Rohrer <holden.rohrer@gmail.com>
Date: Mon, 11 Nov 2019 23:52:06 -0500
Subject: added rsa-code

---
 final/rsa-code.tex | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
 create mode 100644 final/rsa-code.tex

(limited to 'final/rsa-code.tex')

diff --git a/final/rsa-code.tex b/final/rsa-code.tex
new file mode 100644
index 0000000..64a0a47
--- /dev/null
+++ b/final/rsa-code.tex
@@ -0,0 +1,20 @@
+The code for RSA encryption and decryption can be found in this folder at {\tt rsa-encrypt.py} and {\tt rsa-decrypt.py}.
+{\tt rsa-encrypt} relies completely on user input, allowing the user to input a semiprime of arbitrary size (larger is more secure) and a value $e$ which must be coprime with one less both divisors of the semiprime ($p-1$ and $q-1$).
+However, other than basic input and type conversion (string to list of integers to list of integers, for example), the ``heavy-lifting'' it does is very limited.
+{\tt\par
+def decrypt\_block(blk):\par
+\hskip .25in return blk**d \% n\par
+}
+defines the majority of it, specifically the application of Euler's theorem.
+
+
+Similarly, decryption relies on the basic principle of Euler's theorem to develop the decryption value $d$ (and the fact that that value can exist).
+While efficiency was not absolutely necessary, it could be improved by using a speedier (Euclidean algorithm-based) decision algorithm for $d$ than simply checking all values.
+This was neglected to focus on the real interesting component of RSA.
+Once that value $d$ is available, the decryption can be known easily
+In this case,
+{\tt\par
+def encrypt\_block(blk):\par
+\hskip .25in return (blk ** e) \% n\par
+}
+defines the heavy lifting of ``undoing'' the RSA encryption, and shows how RSA shines in its simplicity---in stark contrast with its convoluted comrades.
-- 
cgit 

