43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
from Crypto.Cipher import AES
|
|
|
|
def pad(data):
|
|
padding = 16 - len(data) % 16
|
|
return data + padding * ' '
|
|
|
|
def unpad(data):
|
|
return data[:length]
|
|
|
|
def keyGen():
|
|
#Generating random key of 32 bytes
|
|
key=os.urandom(32)
|
|
#print("Key Generated")
|
|
#print(key)
|
|
return key
|
|
|
|
|
|
def encryptMsg(plaintext,key):
|
|
#Initialization vector in AES should be 16 bytes
|
|
IV = 16*'\x00'
|
|
#Creation of encryptor and decryptor object using above details
|
|
cipher=AES.new(key,AES.MODE_CBC,IV)
|
|
return cipher.encrypt(pad(plaintext))
|
|
|
|
def decryptMsg(ciphertext, key):
|
|
#Initialization vector in AES should be 16 bytes
|
|
IV = 16*'\x00'
|
|
#Creation of encryptor and decryptor object using above details
|
|
cipher=AES.new(key,AES.MODE_CBC,IV)
|
|
return unpad(cipher.decrypt(ciphertext));
|
|
|
|
|
|
msg=input('Enter The Message To Be Encrypted : ')
|
|
length=len(msg)
|
|
key = keyGen()
|
|
print("Key generated : "+str(key))
|
|
ciphertext = encryptMsg(msg,key)
|
|
print("Encrypted Text : "+str(ciphertext))
|
|
plaintext = decryptMsg(ciphertext, key)
|
|
print("Decrypted Text : "+str(plaintext))
|