-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path4 Cript alg.py
49 lines (47 loc) · 1.18 KB
/
4 Cript alg.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
# vigener
def vigener(text, key):
alpArr = []
alp = "abcdefghijklmnopqrstuvwxyz"
alpArr += alp
m = len(key)
ciphertext = ""
for index in range(len(text)):
if text[index] == " ":
key = key[-1]+key[:-1]
ciphertext += " "
else:
ciphertext += alpArr[((alpArr.index(text[index]) + alpArr.index(key[index % m])) % 26)]
return ciphertext
print("\nVigener")
print("text: lorem ipsum")
print("key: firstkey")
print("ciphertext:",vigener("lorem ipsum", "firstkey"))
# ===========================================================================================
# RSA
def mod_inverse(e, m):
for x in range(1, m):
if (e * x) % m == 1:
return x
return -1
print("===========")
print("Rsa")
print("text: hello")
def KeyGen():
p = 313
q = 191
n = p*q
m = (p - 1) * (q - 1)
e = 2167
d = mod_inverse(e, m)
return [(e, n), (d, n)]
print("keys:",KeyGen())
def Encrypt(message):
e, n = KeyGen()[0]
c = [pow(ord(c), e, n) for c in message]
return c
print("encrypt:",Encrypt("hello"))
def Decrypt(message):
d, n = KeyGen()[1]
c = [chr(pow(c, d, n)) for c in message]
return ''.join(c)
print("decrypt:", Decrypt(Encrypt("hello")))