#! /usr/bin/env python3 from operator import xor ## unsigned 32 bit integers from ctypes import c_uint32 MASK32 = 0xffffffff delta = c_uint32(0x9e3779b9).value ROUNDS = 32 def add(x,y): return c_uint32(x + y).value def subtract(x,y): return c_uint32(x - y).value def leftshift4add(x,k): return add(c_uint32(x << 4).value, c_uint32(k).value) def rightshift5add(x,k): return add(c_uint32(x >> 5).value, c_uint32(k).value) class TEA: def __init__(self, p,k): self.P = p self.K = [c_uint32(((MASK32 << x) & k) >> x).value for x in range(96,-1,-32)] for x in self.K: print (hex(x)) ## you need to define the following two functions def encrypt(self): return 0xffff def decrypt(self, C): return 0xffff """ Output answers """ if __name__ == '__main__': # TEA ALGORITHM K = 0xA56BABCD00000000FFFFFFFFABCDEF01 P = 0x0123456789ABCDEF T = TEA(P, K) C = T.encrypt() P2 = T.decrypt(C) print ("Original plaintext: " + str(hex(P))) print ("Ciphertext: " + str(hex(C))) print ("Decrypted plaintext: " + str(hex(P2)))