/
encryptor.py
56 lines (43 loc) · 1.43 KB
/
encryptor.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
from ecies.utils import generate_eth_key
from ecies import encrypt, decrypt
import binascii
import json
import os
def save(keydict, file="keys.dat"):
with open(file, "w") as keyfile:
keyfile.write(json.dumps(keydict))
def load(file="keys.dat"):
with open(file) as keyfile:
data = json.loads(keyfile.read())
return data
def keyfile_found(file="keys.dat"):
if os.path.isfile(file):
return True
else:
return False
def generate():
keydict = {}
privKey = generate_eth_key()
keydict["private"] = privKey.to_hex()
keydict["public"] = privKey.public_key.to_hex()
return keydict
def encrypt_whole(pubkey, plaintext):
encrypted = encrypt(pubkey.strip(), plaintext.encode())
return binascii.hexlify(encrypted)
def decrypt_whole(privkey, ciphertext):
decrypted = decrypt(privkey.strip(), binascii.unhexlify(ciphertext))
return decrypted.decode()
if __name__ == "__main__":
if not keyfile_found():
keydict = generate()
save(keydict)
else:
keydict = load()
print("Encryption public key:", keydict["public"])
print("Decryption private key:", keydict["private"])
plaintext = 'Some plaintext for encryption'
print("Plaintext:", plaintext)
encrypted = encrypt_whole(keydict["public"], plaintext)
print("Encrypted:", encrypted)
decrypted = decrypt_whole(keydict["private"], encrypted)
print("Decrypted:", decrypted)