Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.20 KB | None | 0 0
  1. from Crypto.PublicKey import RSA
  2. from base64 import b64decode
  3. from gmpy2 import invert
  4.  
  5. def findModInverse(a, m):
  6.     u1, u2, u3 = 1, 0, a
  7.     v1, v2, v3 = 0, 1, m
  8.     while v3 != 0:
  9.         q = u3 // v3
  10.         v1, v2, v3, u1, u2, u3 = (u1 - q * v1), (u2 - q * v2), (u3 - q * v3), v1, v2, v3
  11.     return u1 % m
  12.  
  13. pubkey = b64decode("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALgR/vfjBQ0EyuIl5AE+3UrlHSgzU5yRs+pg4Lzwv9wErzHbn+rI0pHAStoOpEM3F0GeYCw7G+FRJ15klYfIez8CAwEAAQ==") #aus weak_pub
  14. r = RSA.importKey(pubkey)
  15. print(r.n) # 9640543689585112556450998579422564855633524831313534737934634573166750126769105229624001689064786292047232170704131903674012950145389088141063272685665087
  16. print(r.e) # 65537
  17. # we see that n is fairly small -> FactorDB
  18.  
  19. p = 85808933370531870609859306825598553446977355131859172055304205392849791600423
  20. q = 112348951454229659434863381917360166800011983956305986266648870447917250083369
  21.  
  22. n = p * q
  23. assert r.n == n, "die beiden N stimmen nicht ueberein"
  24.  
  25. e = r.e
  26. d = findModInverse(e, (p - 1) * (q - 1))
  27. e1 = d % (p-1)
  28. e2 = d % (q-1)
  29. coeff = int(invert(q, p))
  30.  
  31. print("D: ", d)
  32. print("p: ", p)
  33. print("q: ", q)
  34. print("n: ", n)
  35. print("e1: ", e1)
  36. print("e2: ", e2)
  37. print("coeff: ", coeff)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement