Advertisement
Guest User

жопный код

a guest
Aug 24th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.93 KB | None | 0 0
  1. from gmpy2 import powmod, invert
  2. from Crypto.Util.number import getPrime as prime
  3.  
  4. flag = <redacted>
  5.  
  6. p = prime(512)
  7. q = prime(512)
  8.  
  9. n = p*q
  10. t = (p-1)*(q-1)
  11.  
  12. e = 0b10001
  13. d = invert(e,t)
  14.  
  15. public = (e,n)
  16. private = (d,n)
  17.  
  18. enc_flag = powmod(flag, e, n)
  19.  
  20.  
  21.  
  22. def pad(m):
  23.     global p
  24.     if p.bit_length() + m.bit_length() < n.bit_length():
  25.         return True, (p << m.bit_length()) + m
  26.     else:
  27.         return False, 'Error: message too big'
  28.  
  29. print('bzzz')
  30. print('public key: ', public)
  31. print('encrypted flag: ', enc_flag)
  32. while True:
  33.     choice = input('[E]ncrypt\n[D]ecrypt\n> ')
  34.     if choice == 'E':
  35.         try:
  36.             m = int(input('m: '))
  37.         except:
  38.             print('Error: invalid message')
  39.             exit()
  40.         pad_res, m = pad(m)
  41.         if pad_res:
  42.             print('c:', powmod(m, e, n))
  43.         else:
  44.             print(m)
  45.     elif choice == 'D':
  46.         print('TODO')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement