Skip to content

Commit 173b2b6

Browse files
committed
added python encryption + rsa encryption
1 parent ec3e763 commit 173b2b6

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

python/cryptography/rsa_encryption.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# !!! not built for production, only a pseudo random prime generator and low prime numbers
2+
import sympy
3+
4+
5+
A = 50
6+
7+
def generate_key_pair():
8+
p = sympy.randprime(A, 4*A)
9+
q = sympy.randprime(A, 4*A)
10+
11+
n = p*q
12+
phi = (p-1) * (q-1)
13+
14+
e = 65537
15+
16+
d = pow(e, -1, phi)
17+
# (e*d)%phi = 1
18+
19+
public_key = (n, e)
20+
private_key = (p, q, d)
21+
22+
return public_key, private_key
23+
24+
def encrypt(key, raw_text):
25+
n = key[0]
26+
e = key[1]
27+
encrypted_text = ""
28+
29+
for char in raw_text:
30+
intchar = ord(char)
31+
encrypted_text += chr(intchar**e % n)
32+
33+
return encrypted_text
34+
35+
def decrypt(key, enc_text):
36+
n = key[0]*key[1]
37+
d = key[2]
38+
decrypted_text = ""
39+
40+
for char in enc_text:
41+
intchar = ord(char)
42+
decrypted_text += chr(intchar**d % n)
43+
44+
return decrypted_text
45+
46+
47+
48+
if __name__ == "__main__":
49+
# TEST CASES
50+
ka_public, ka_private = generate_key_pair()
51+
kb_public, kb_private = generate_key_pair()
52+
53+
raw_text = "Hello World!"
54+
encrypt_msg = encrypt(ka_public, raw_text)
55+
decrypt_msg = decrypt(ka_private, encrypt_msg)
56+
assert raw_text == decrypt_msg
57+
print(raw_text, encrypt_msg, decrypt_msg)
58+
59+
raw_text = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/*-+.^'"
60+
encrypt_msg = encrypt(kb_public, raw_text)
61+
decrypt_msg = decrypt(kb_private, encrypt_msg)
62+
assert raw_text == decrypt_msg
63+
print(raw_text, encrypt_msg, decrypt_msg)

0 commit comments

Comments
 (0)