cryptopals

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

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