Advertisement
jukaukor

Factoring_PollardRho_gmpy2_int.py

Aug 22nd, 2019
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. # Factoring_PollardRho_gmpy2_int.py
  2. # RSA-avaimen murtaminen: tulontekijöiden p ja q löytäminen
  3. # Pollard Pho-menetelmällä
  4. # Sopii suurillekin (yli 100 bit avaimille)
  5. # Pääosa source: Pollard Rho algorithm - Wikipedia
  6. # Käytetty kahdessa funktiosa gmpy2 korvaamaan Pythonin vakiofuntiot
  7. # gcd korvattu gmpy2:n versiolla gmpy2.gcd
  8. # (x**2+1) % n korvatt gmpy2:n gmpy2.f_mod(x**2+1,n)
  9. # Nämä korvaukset pudottavat suurilla kokonaisluvuilla laskenta-ajan puoleen
  10. # Juhani Kaukoranta, versio 22.8.2019
  11.  
  12. import time
  13. import gmpy2
  14.  
  15. def PollardRho(n):
  16. x, y, p = 2, 2, 1
  17. f=lambda x: gmpy2.f_mod(x**2+1, n)
  18. while p == 1:
  19. x = f(x)
  20. y = f(f(y))
  21. p = gmpy2.gcd(abs(x-y),n)
  22. if p == n:
  23. return "Ei tekijöitä, avain alkuluku tms"
  24. else:
  25. q = n // p
  26. return [p,q]
  27.  
  28. n= int(input("anna RSA-avain "))
  29. number = n
  30. time0 = time.perf_counter() # timer alku
  31. print("Alkulukutekijät [p,q] = ",PollardRho(n))
  32. time1 = time.perf_counter()
  33. print("Aikaa kului ",time1-time0," sekuntia")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement