Advertisement
FutureDreams

#cryptoChallenge - solution

Apr 18th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.79 KB | None | 0 0
  1. #cryptoChallenge
  2.  
  3. import random
  4.  
  5. text = "2×2=5"
  6.  
  7. def enc(text):
  8.     limiter = chr(2**(2*2*2+2)+2**(2*2+1)-2)
  9.     key = [ord(random.choice(text)) for x in range(2)]
  10.     res = [str(bin(ord(x)*key[0]-key[1])) for x in text[::-1]]
  11.     return '{0}{1}{2}'.format(str(bin(key[0]**2))+limiter, limiter.join(res), limiter + str(bin(key[1]**2))).replace('0b', '').replace(chr(2**(2*2+1)+2**(2+2)+1), chr(2**(2*2+2)+2**(2+2)-1))
  12.  
  13. def dec(text):
  14.     limiter = chr(2**(2*2*2+2)+2**(2*2+1)-2)
  15.     data = [int('0b'+x, 2) for x in text.replace(chr(2**(2*2+2)+2**(2+2)-1), chr(2**(2*2+1)+2**(2+2)+1)).split(limiter)]
  16.     key = [int(data[0]**(1/2)), int(data[-1]**(1/2))]
  17.     return ''.join([chr(int((x+key[1])/key[0])) for x in data[1:-1][::-1]])
  18.  
  19. encrypted = enc(text)
  20. print(encrypted)
  21. decrypted = dec(encrypted)
  22. print(decrypted)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement