-
Notifications
You must be signed in to change notification settings - Fork 0
/
encryption.py
80 lines (44 loc) · 1.71 KB
/
encryption.py
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
print("Hello, welcome to Adriana Machado's encryption/decryption machine. What is your name?")
x = input()
print("Nice to meet you, ", x, ". I am a non-sentient machine; you can call me Arendt.")
print("Please enter in ALL CAPS any variation of the English 26-letter alphabet with no punctuation and watch the magic occur!")
y = input()
p = 13 # integer greater than or equal to 13
q = 17 # integer greater than or equal to 17
n = p * q # public key
e = 5 # public key
i = 2
def f(n):
"""phi function of n
Argument: n
Output: p*q-p-q+1"""
return int((p - 1)*(q - 1))
d = int(((i * f(n)) + 1) / e) # private key
print("Your phi(n) is: ", f(n))
caps_alpha = {"A":1, "B":2, "C":3, "D":4, "E":5, "F":6, "G":7, "H":8, "I":9, "J":10, "K":11, "L":12, "M":13, "N":14, "O":15, "P":16, "Q":17, "R":18, "S":19, "T":20, "U":21, "V":22, "W":23, "X":24, "Y":25, "Z":26, " ":27}
def cypher(y):
"""
For processing letters to numbers through the caps_alpha cypher.
Argument: ALL CAPS series of letters
Output: a list of numbers corresponding to each original letter
"""
l_to_n = []
for letter in y:
number = caps_alpha.get(letter)
l_to_n.append(number)
return l_to_n
cypher = cypher(y)
print("Your cypher is: ", cypher)
def c_encryption(cypher):
"""
For processing the list of numbers generated by the cypher through the given encryption formula
Argument: cypher output list of numbers
Output: list of encrypted numbers
"""
c_to_e = []
for number in cypher:
c = int((number**e)%n)
c_to_e.append(c)
return c_to_e
encryption = c_encryption(cypher)
print("Your encryption is: ", encryption)