cryptopals

https://cryptopals.com/
Log | Files | Refs

detect_single_character_xor_char_frequency.py (487B)


      1 hex_strings = open('files/4.txt').read().splitlines()
      2 
      3 frequent_letters = "etaoi "
      4 candidate = ""
      5 candidate_frequency = 0
      6 
      7 for hex in hex_strings:
      8     for plaintext in [''.join([chr(x ^ ord(a)) for a in hex.decode("hex")]) for x in range(256)]:
      9         frequency = sum([plaintext.count(frequent_letters[n]) for n in range(len(frequent_letters))])
     10 
     11         if frequency > candidate_frequency:
     12             candidate = plaintext
     13             candidate_frequency = frequency
     14 
     15 print candidate