docs

a slatepencil documentail site

View on GitHub

Encryption

AES encryption

# pip install pycryptodome
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad

passwd = input('Encrypt key:')
key = pad(passwd.encode('utf-8'), 16)
print("SecretKey:", str(key))

# aes encrypt prepare
aes = AES.new(key, AES.MODE_ECB)
message = input("Input public message:")
text = pad(message.encode('utf-8'), 16)
etext = aes.encrypt(text)
print("Secret message:", str(etext))

passwd2 = input('Decrypt key:') # same as encrypt key
key2 = pad(passwd2.encode('utf-8'), 16)
aes = AES.new(key2, AES.MODE_ECB)

# decrypt
de = unpad(aes.decrypt(etext), 16)
print('Public message', str(de, 'utf-8'))

RSA encryption

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

## generate .pem & .key
key = RSA.generate(2048)
pr_key = key.export_key()
pb_key = key.public_key().export_key()

## save .pem & .key
fd = open("pr_key.bin", "wb")
fd.write(pr_key)
fd.close()
fd = open("pb_key.bin", 'wb')
fd.write(pb_key)
fd.close()

## RSA encryption
key_data = open("pb_key.bin", 'rb').read()
key = RSA.import_key(key_data)
cipher = PKCS1_OAEP.new(key)

message = 'password is not secret key'
etext = cipher.encrypt(message.encode('utf-8'))
print('Encrypted text', etext)

## tranfer encrypted text
fd = open("en_message.txt", 'wb')
fd.write(etext)
fd.close()

## RSA decryption
key_data2 = open("pr_key.bin", 'rb').read()
key2 = RSA.importKey(key_data2)
cipher2 = PKCS1_OAEP.new(key2)

## receive encrypted text
fd = open("en_message.txt", "rb")
en_data = fd.read()
text = cipher2.decrypt(en_data)
print(str(text, 'utf-8'))