Advertisement
Wacky_rubia

xor

Sep 19th, 2015
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.17 KB | None | 0 0
  1. def read(filename):
  2.     text = ''
  3.     with open(filename, 'r', encoding='ascii') as f:
  4.         for line in f:
  5.             text += line
  6.     return text
  7.  
  8. def encode_text(text, key):
  9.     ans = ''
  10.     for i in range(0,len(text), 24):
  11.         line = text[i:i+24]
  12.         for j, l in enumerate(line):
  13.             ans += xor(l, key[j])
  14.     return (ans)
  15.  
  16.  
  17. def xor(a, b):
  18.     a = ord(a)
  19.     b = ord(b)
  20.     return chr(a^b)
  21.  
  22. def get_frequensy(text, i):
  23.     frec = {}
  24.     for sym in text[i::24]:
  25.         if sym in frec:
  26.             frec[sym] += 1
  27.         else:
  28.             frec[sym] = 1
  29.     i = ''
  30.     for t in sorted(frec, key=lambda a: frec[a]):
  31.         i = t
  32.     return i
  33.  
  34. def get_word(text, f):
  35.     d = ''
  36.     popular = get_frequensy(text, f)
  37.     for letter in text[f::24]:
  38.         if letter == popular:
  39.             d = xor(popular, '_')
  40.             break
  41.     return(d)
  42.  
  43. if __name__ == "__main__":
  44.     text = read('encryptedtext')
  45.     encr_text = encode_text(text, 'qwertyuiopasdfghjklzxcvb')
  46.     decr_text = encode_text(encr_text, 'qwertyuiopasdfghjklzxcvb')
  47.     for i in range(len(text)):
  48.         if text[i] != decr_text[i]:
  49.             raise TypeError(i)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement