Advertisement
skotoseme

one-time pad

May 11th, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.87 KB | None | 0 0
  1. from random import randrange
  2.  
  3. def otp(a, b, mode):
  4.     """one-time pad
  5.    mode=0: encrypt; mode=1: decrypt"""
  6.     a, b = otpformat(a), otpformat(b)
  7.     output = ''
  8.     i = 0
  9.     if mode == 0: sign = 1
  10.     elif mode == 1: sign = -1
  11.     for letter in a:
  12.         output += chr((((ord(letter)-65)
  13.                + (ord(b[i%len(b)])-65)*sign)%26) + 65)
  14.         i += 1
  15.     return output
  16.  
  17. def otpformat(a):
  18.     a = a.replace(' ','')
  19.     a = a.upper()
  20.     return a
  21.    
  22. def otpgen(length):
  23.     """one-time pad key generator"""
  24.     output = ''
  25.     for i in range(length):
  26.         output += chr(randrange(65,91))
  27.     return output
  28.  
  29. def xor(a, b):
  30.     """exclusive or"""
  31.     output = ''
  32.     i = 0
  33.     for bit in a:
  34.         if bit == b[i % len(b)]:
  35.             output += '0'
  36.         elif bit != b[i % len(b)]:
  37.             output += '1'
  38.         i += 1
  39.     return output
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement