Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. from itertools import combinations as pp
  2. import string
  3.  
  4. def egcd(a, b):
  5. if a == 0:
  6. return (b, 0, 1)
  7. g, y, x = egcd(b%a,a)
  8. return (g, x - (b//a) * y, y)
  9.  
  10. def modinv(a, m):
  11. g, x, y = egcd(a, m)
  12. if g != 1:
  13. raise Exception('No modular inverse')
  14. return x%m
  15.  
  16. def mul_arr(a):
  17. x = 1
  18. for i in a:
  19. x *= i
  20. return x
  21.  
  22. def rm_arr(a,b):
  23. for i in b:
  24. a.remove(i)
  25.  
  26.  
  27. def run():
  28. a = input("start: ")
  29. b = input("end: ")
  30. return range(a,b+1)
  31.  
  32. def get_arr(a):
  33. j=0
  34. for i in pp(range(19)[1:],a):
  35. j+=1
  36. return j
  37.  
  38. def main():
  39. n = int("0x624d0c1c938cb50badd063227b2b22067772aaa6e1b8b3d39a3f8ce4998ab2bab43eb82fe45c255e3393537ca6b40027c9fdb9216cee85424ca32aa2a4d0ed91349ff93b409e853f1a0869e46d5ce61cdf93bf3af6de5b2b8ee63fb7ac0927240bfb5ef510d265236b45b83e7672614d398721d82e9cf6ddab2082517337e279206b7d6f5764394c46e0e8ed70c03e5b54a1c783f0d4e301cae3397155daca9d85f2a56fa35fb235824c08b9eea186072d58c230a36a62b6e4ec4692332fc1573d07a0b199186ad9b3b3c5856379b517ee5ef0af4ab99e7831f4cf3210c3abc56eceff1d3e43dd9497b9837fa26c24f8f8647746ddb891775a94dc201b64431d",16)
  40. c = int("0xdbe279d9beb56937b6cbf8d9fbcec7a687685b732aad5b4bb99514b8872b8a9c2e0794a2f0e7a44fd969091dc0ddb7e783cd09504cbdd4b492919c0b37503dae1368961ccfa2b2eeba88491cfa9501073ebd5116c1dfd4a9bbbf47d00fafef71ff73038885a3bb72b524b7ca73e33b8cdda2728d0f4c5e3fb57576aa138047e4579c4ddc29c302ace4ff2abeccf13f77a0760f26509f4d5c12bfd4064da6ba6ff2474ce99db1dbeb506447b6fed882404aa8da8809acd7c80dd6d3ce0b5b6cce7a962e62ca1670dc86dec97f29a222391c4cbcbf60c71eead6a66cd75cb301fcb469eb103593d73cc310c82539f5cffaf311d122e2bf8e18e849fd486cbde42",16)
  41. arr = [2,2,2,3,3,3,3,7,29,67,269,521,647,2963,16033,1461587,6147941,388466317,219131854571894898296347059782706813014913118305950778644135426889381249638883129125075867276309884106481368202530893162384711671441594087093049266433698271950723321258070936414611335582365805217842029050496292376137630527386201546901661226594456244583650909362378112542783885914487397895472995011439037429949914214817952503826182959390655969610741801792999576633391659756579934455436602608789504575989762665704500627204669790309942843689447460700498846424041108845862051886441834370883358207459121444053092751857642828052385398548945091038534717956361820189769568034479243]
  42.  
  43. for j in run():
  44. q = 0
  45. print "-------------"+j.__str__()+"---------------"
  46. for i in pp(arr[1:],j):
  47. l = get_arr(j)
  48. q+=1
  49. if int(l/100) > 0 and q %int(l/100) == 0:
  50. print int((q/(l+0.0))*100),
  51. a = mul_arr(i)
  52. if a % 2 == 0:
  53.  
  54. phi = n - a + 1
  55. d = modinv(65537,phi)
  56. msg = pow(c,d,n)
  57. str = hex(msg)[2:-1]
  58. if len(str)%2 == 1:
  59. str = "".join(["0",str])
  60. str = str.decode('hex')
  61. if all(z in string.printable for z in str):
  62. print
  63. return str
  64. print
  65.  
  66. return "Sorry"
  67.  
  68. print main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement