summary refs log tree commit diff stats
path: root/python/code/10_caeser_cipher.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/code/10_caeser_cipher.py')
-rw-r--r--python/code/10_caeser_cipher.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/python/code/10_caeser_cipher.py b/python/code/10_caeser_cipher.py
new file mode 100644
index 0000000..64b1a60
--- /dev/null
+++ b/python/code/10_caeser_cipher.py
@@ -0,0 +1,27 @@
+import sys
+message = input('Enter message: ')
+key = None
+try:
+    key = int(input('Enter key (1-25, -1 - -25): '))
+except ValueError:
+    print('Invalid key, must be an integer')
+    sys.exit(1)
+
+if key < 0: key += 26
+if not (1 <= key <= 25):
+    print('Invalid key, must be an integer with absolute value between 1 and 25, inclusive')
+    sys.exit(2)
+
+marr = bytearray(message, 'ascii')
+for i in range(len(marr)):
+    c = marr[i]
+    if 64 < c < 64 + 27:
+        c = ((c - 65) + key) % 26 + 65
+    elif 96 < c < 96 + 27:
+        c = ((c - 97) + key) % 26 + 97
+    marr[i] = c
+
+print('Caesar cipher with k =', key, 'applied to the given message:')
+print(str(marr, encoding='ascii'))
+
+