easy AES
Deskripsi
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Util.number import bytes_to_long, long_to_bytes
import os
key = os.urandom(AES.key_size[0])
iv = os.urandom(AES.block_size)
secret = bytes_to_long(os.urandom(128))
def encrypt(pt):
bytes_pt = long_to_bytes(pt)
cipher = AES.new(key, AES.MODE_OFB, iv)
padded_pt = pad(bytes_pt, AES.block_size)
return bytes_to_long(cipher.encrypt(padded_pt))
def menu():
print('===== Menu =====')
print('1. Encrypt')
print('2. Get encrypted secret')
print('3. Get flag')
print('4. Exit')
choice = int(input('> '))
return choice
def get_flag():
res = int(input('secret: '))
if secret == res:
os.system('cat flag.txt')
print()
while True:
try:
choice = menu()
if choice == 1:
pt = int(input('plaintext = '))
ciphertext = encrypt(pt)
print(f'{ciphertext = }')
if choice == 2:
ciphertext = encrypt(secret)
print(f'{ciphertext = }')
if choice == 3:
get_flag()
break
if choice == 4:
break
except:
print('something error happened.')
break
print('bye.')





Last updated