blob: 6a39ecf9fc4eb062952725f8e4cd139395e48c76 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/usr/bin/python3
# Challenge 025
#
# Task #2
# Create script to implement Chaocipher. Please checkout wiki page for more
# information.
import sys
import re
left = "HXUCZVAMDSLKPEFJRIGTWOBNYQ"
right = "PTLNBQDEOYSFAVZKGJRIHWXUMC"
def permute_alphabets(pos):
global left, right
# permute left alphabet
left = left[pos:]+left[:pos]
left = left[0]+left[2:14]+left[1]+left[14:]
# permute right alphabet
right = right[pos:]+right[:pos]
right = right[1:]+right[0]
right = right[:2]+right[3:14]+right[2]+right[14:]
def find_pos(letter, alphabet):
found = re.search(letter, alphabet)
return found.start(0)
def encode(text):
global left, right
encoded = ""
for letter in text:
pos = find_pos(letter, right)
code = left[pos]
encoded += code
permute_alphabets(pos)
return encoded
def decode(encoded):
global left, right
text = ""
for code in encoded:
pos = find_pos(code, left)
letter = right[pos]
text += letter
permute_alphabets(pos)
return text
if sys.argv[1]=="encode":
print(encode(sys.argv[2]))
elif sys.argv[1]=="decode":
print(decode(sys.argv[2]))
else:
print("Usage: ch-2.py encode|decode text")
|