41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
from Crypto.Cipher import AES
|
|
|
|
#Generating random key of 32 bytes
|
|
key=os.urandom(32)
|
|
print("Key Generated")
|
|
print(key)
|
|
#Initialization vector in AES should be 16 bytes
|
|
IV = 16*'\x00'
|
|
#Mode of encryption CBC
|
|
mode = AES.MODE_CBC
|
|
#Creation of encryptor and decryptor object using above details
|
|
encryptor=AES.new(key,mode,IV=IV)
|
|
decryptor=AES.new(key,mode,IV=IV)
|
|
|
|
def encrypt(msg):
|
|
n=len(msg)
|
|
#Checking for length of msg to be multiple of 16 as it is required in aes encryption
|
|
if n==0:
|
|
return
|
|
elif n%16!=0:
|
|
msg+=' '*(16-(n%16)) #padding with spaces inorder to make the len of msg to be a multiple of 16
|
|
cipher=encryptor.encrypt(msg)
|
|
print("Encrypted Text")
|
|
print(cipher)
|
|
print("Checking for decryption")
|
|
text=decryptor.decrypt(cipher);
|
|
#Checking if decrypted text is padded with spaces,so it has been removed by using orignal length of msg
|
|
length=len(text)
|
|
if(length>n):
|
|
plain_text=text[:n]
|
|
else:
|
|
plain_text=text
|
|
print("Decrypted Text")
|
|
print(plain_text)
|
|
|
|
msg=input('Enter The Message To Be Encrypted\n')
|
|
#calling encrypt function
|
|
encrypt(msg)
|