Skip to content

Commit 02dfe28

Browse files
committed
Add asymmetric encryption in python
1 parent f2a4a5b commit 02dfe28

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

asymmetric_cryptography/README.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## Asymmetric Encryption in python
2+
3+
An example of asymmetric encryption in python using a public/private keypair - utilizes RSA from PyCrypto library
4+
5+
```bash
6+
pip install pycrypto
7+
python asymmetric.py
8+
```

asymmetric_cryptography/asymmetric.py

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from Crypto import Random
2+
from Crypto.PublicKey import RSA
3+
import base64
4+
5+
6+
def generate_keys(modulus_length=256*4):
7+
privatekey = RSA.generate(modulus_length, Random.new().read)
8+
publickey = privatekey.publickey()
9+
return privatekey, publickey
10+
11+
12+
def encryptit(message , publickey):
13+
encrypted_msg = publickey.encrypt(message, 32)[0]
14+
encoded_encrypted_msg = base64.b64encode(encrypted_msg)
15+
return encoded_encrypted_msg
16+
17+
18+
def decryptit(message, privatekey):
19+
decoded_encrypted_msg = base64.b64decode(message)
20+
decoded_decrypted_msg = privatekey.decrypt(decoded_encrypted_msg)
21+
return decoded_decrypted_msg
22+
23+
24+
if __name__ == '__main__':
25+
message = "This is a awesome message!"
26+
privatekey , publickey = generate_keys()
27+
encrypted_msg = encryptit(message.encode("utf-8"), publickey)
28+
decrypted_msg = decryptit(encrypted_msg, privatekey)
29+
30+
print(f'{privatekey.exportKey()} - ({len(privatekey.exportKey())})')
31+
print(f'{publickey.exportKey()} - ({len(publickey.exportKey())})')
32+
print(f'Original: {message} - ({len(message)})')
33+
print(f'Encrypted: {encrypted_msg} - ({len(encrypted_msg)})')
34+
print(f'Decrypted: {decrypted_msg} - ({len(decrypted_msg)})')

0 commit comments

Comments
 (0)