34 lines
		
	
	
		
			No EOL
		
	
	
		
			851 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			No EOL
		
	
	
		
			851 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from Crypto.Cipher import AES
 | 
						|
from Crypto.Util.Padding import pad, unpad
 | 
						|
 | 
						|
def aes_cipher(key):
 | 
						|
    return AES.new(key.encode('utf-8'), AES.MODE_ECB)
 | 
						|
 | 
						|
def aes_en(ptext, key):
 | 
						|
    cipher = aes_cipher(key)
 | 
						|
    ptext = pad(ptext.encode('utf-8'), AES.block_size)
 | 
						|
    return cipher.encrypt(ptext)
 | 
						|
 | 
						|
def aes_de(ctext, key):
 | 
						|
    cipher = aes_cipher(key)
 | 
						|
    decrypted = cipher.decrypt(ctext)
 | 
						|
    return unpad(decrypted, AES.block_size).decode('utf-8')
 | 
						|
 | 
						|
def aespad_key(key):
 | 
						|
    return key.ljust(16)[:16]
 | 
						|
 | 
						|
    # 16 for 128 bit, 24 for 192, 32 for 256
 | 
						|
 | 
						|
def main():
 | 
						|
    print("Welcome to AES-128")
 | 
						|
    ptext = input("Enter plaintext: ")
 | 
						|
    key = input("Enter key: ")
 | 
						|
 | 
						|
    key = aespad_key(key)
 | 
						|
 | 
						|
    ctext = aes_en(ptext, key)
 | 
						|
    print("Your ciphertext: ", ctext)
 | 
						|
    print("Your decrypted plaintext: ", aes_de(ctext, key))
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main() |