can anyone tell me what i did wrong with the decryption part of this code? ive been looking at it for some time now (while working on other related stuff), and i cant seem to find the problem with it. its getting really retarded, on my part

and this is not homework! i do not take any computer classes at all. im doing this because i want to, but im stuck, and cant find any answers

# Tiny Encryption Algorithm

def add(value1, value2):
	return (value1 +value2)%(2**32)

def makehex(value,size=8):
	value = hex(value)[2:]
	if value[-1] == 'L':
		value = value[0:-1]
	while len(value)<size:
		value = '0' + value
	return value
	
def TEA(data, key, mode, rounds = 64, delta = 0x9e3779b9, total = 0xc6ef3720):
	data = [int(data[:8],16),int(data[8:],16)]
	key = [int(key[:8],16),int(key[8:16],16),int(key[16:24],16),int(key[24:],16)]
	cycles = rounds/2
	if mode == 'e':
		total = 0
		for i in range(cycles):
			total = (total+delta)%2**32
			data[0] = add(add(data[1]<<4, key[0]) ^ add(data[1], total) ^ add(data[1]>>5, key[1]), data[0]) 
			data[1] = add(add(data[0]<<4, key[2]) ^ add(data[0], total) ^ add(data[0]>>5, key[3]), data[1]) 
	else:
		for i in range(cycles):
			data[1] = add(add(data[0]<<4, key[2]) ^ add(data[0], total) ^ add(data[0]>>5, key[3]), -data[1])
			data[0] = add(add(data[1]<<4, key[0]) ^ add(data[1], total) ^ add(data[1]>>5, key[1]), -data[0])
			total -= delta
	return makehex(data[0])+makehex(data[1])

# Plain Text : 0123456789abcdef
# Cipher Key : 00112233445566778899aabbccddeeff
# Cipher Text : 126c6b92c0653a3e

key = '00112233445566778899aabbccddeeff'
ctext =TEA('0123456789abcdef',key,'e')
print ctext,ctext == '126c6b92c0653a3e'	# gives me true

ctext = TEA(ctext,key,'d')
print ctext, ctext == '0123456789abcdef'	# gives me false: 66dfc50da4915142

isnt this basically what is shown on wikipedia, but in python? so why isnt it working?

This article has been dead for over six months. Start a new discussion instead.