added more descriptive names and output, bounds checking on key
completed problem 3: cracking xor