Advertisement
Guest User

I have removed some minor bugs. All credit goes to @abarnert

a guest
Aug 30th, 2013
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. import random
  2.  
  3. def symmetric_enc(message, key):
  4.     return [ord(char) ^ key for char in message]
  5.  
  6. def symmetric_dec(cipher, key) :
  7.     return [num ^ key for num in cipher]
  8.  
  9. def asymmetric_enc(message, pubkey) :
  10.     e,n = pubkey
  11.     c = pow(message,e,n)
  12.     return c
  13.  
  14. def asymmetric_dec(cipher, prikey) :
  15.     d,n = prikey
  16.     message = pow(cipher,d,n)
  17.     return message
  18.  
  19. def enc(message, pubkey):
  20.     session_key = random.randrange(1, 256)
  21.     return (asymmetric_enc(session_key, pubkey),
  22.             symmetric_enc(message, session_key))
  23.  
  24. def dec(message, prikey):
  25.     session_key, body = message
  26.     session_key = asymmetric_dec(session_key, prikey)
  27.     msg = symmetric_dec(body, session_key)
  28.     message = ''.join([chr(m) for m in msg])
  29.     return message
  30.  
  31. n = 3337
  32. e = 79
  33. d = 1019
  34.  
  35. pubkey = (e, n)
  36. prikey = (d, n)
  37.  
  38. msg = 'Hello World!'
  39. print(msg)
  40. cipher = enc(msg, pubkey)
  41. print('-------')
  42. for c in cipher : print(c,)
  43. print('-------')
  44. decipher = dec(cipher, prikey)
  45. print(decipher)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement