single_byte_xor_cipher_char_frequency.py (465B)
1 hex = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736" 2 frequent_letters = "etaoi " 3 candidate = "" 4 candidate_frequency = 0 5 6 for plaintext in [''.join([chr(x ^ ord(a)) for a in hex.decode("hex")]) for x in range(256)]: 7 frequency = sum([plaintext.count(frequent_letters[n]) for n in range(len(frequent_letters))]) 8 9 if frequency > candidate_frequency: 10 candidate = plaintext 11 candidate_frequency = frequency 12 13 print candidate