Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from itertools import combinations as pp
- import string
- def egcd(a, b):
- if a == 0:
- return (b, 0, 1)
- g, y, x = egcd(b%a,a)
- return (g, x - (b//a) * y, y)
- def modinv(a, m):
- g, x, y = egcd(a, m)
- if g != 1:
- raise Exception('No modular inverse')
- return x%m
- def mul_arr(a):
- x = 1
- for i in a:
- x *= i
- return x
- def rm_arr(a,b):
- for i in b:
- a.remove(i)
- def run():
- a = input("start: ")
- b = input("end: ")
- return range(a,b+1)
- def get_arr(a):
- j=0
- for i in pp(range(19)[1:],a):
- j+=1
- return j
- def main():
- n = int("0x624d0c1c938cb50badd063227b2b22067772aaa6e1b8b3d39a3f8ce4998ab2bab43eb82fe45c255e3393537ca6b40027c9fdb9216cee85424ca32aa2a4d0ed91349ff93b409e853f1a0869e46d5ce61cdf93bf3af6de5b2b8ee63fb7ac0927240bfb5ef510d265236b45b83e7672614d398721d82e9cf6ddab2082517337e279206b7d6f5764394c46e0e8ed70c03e5b54a1c783f0d4e301cae3397155daca9d85f2a56fa35fb235824c08b9eea186072d58c230a36a62b6e4ec4692332fc1573d07a0b199186ad9b3b3c5856379b517ee5ef0af4ab99e7831f4cf3210c3abc56eceff1d3e43dd9497b9837fa26c24f8f8647746ddb891775a94dc201b64431d",16)
- c = int("0xdbe279d9beb56937b6cbf8d9fbcec7a687685b732aad5b4bb99514b8872b8a9c2e0794a2f0e7a44fd969091dc0ddb7e783cd09504cbdd4b492919c0b37503dae1368961ccfa2b2eeba88491cfa9501073ebd5116c1dfd4a9bbbf47d00fafef71ff73038885a3bb72b524b7ca73e33b8cdda2728d0f4c5e3fb57576aa138047e4579c4ddc29c302ace4ff2abeccf13f77a0760f26509f4d5c12bfd4064da6ba6ff2474ce99db1dbeb506447b6fed882404aa8da8809acd7c80dd6d3ce0b5b6cce7a962e62ca1670dc86dec97f29a222391c4cbcbf60c71eead6a66cd75cb301fcb469eb103593d73cc310c82539f5cffaf311d122e2bf8e18e849fd486cbde42",16)
- arr = [2,2,2,3,3,3,3,7,29,67,269,521,647,2963,16033,1461587,6147941,388466317,219131854571894898296347059782706813014913118305950778644135426889381249638883129125075867276309884106481368202530893162384711671441594087093049266433698271950723321258070936414611335582365805217842029050496292376137630527386201546901661226594456244583650909362378112542783885914487397895472995011439037429949914214817952503826182959390655969610741801792999576633391659756579934455436602608789504575989762665704500627204669790309942843689447460700498846424041108845862051886441834370883358207459121444053092751857642828052385398548945091038534717956361820189769568034479243]
- for j in run():
- q = 0
- print "-------------"+j.__str__()+"---------------"
- for i in pp(arr[1:],j):
- l = get_arr(j)
- q+=1
- if int(l/100) > 0 and q %int(l/100) == 0:
- print int((q/(l+0.0))*100),
- a = mul_arr(i)
- if a % 2 == 0:
- phi = n - a + 1
- d = modinv(65537,phi)
- msg = pow(c,d,n)
- str = hex(msg)[2:-1]
- if len(str)%2 == 1:
- str = "".join(["0",str])
- str = str.decode('hex')
- if all(z in string.printable for z in str):
- print
- return str
- print
- return "Sorry"
- print main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement