Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from oracle import *
- from helper import *
- num_val = 7
- num_def = 1
- # This GCD alghoritm was taken from internet source WIKIPEDIA. i think its not problem to look through such codes!
- def my_mod(a, b):
- tmp = [0, 1, 1, 0]
- a0 = tmp[0]
- a1 = tmp[1]
- b0 = tmp[2]
- b1 = tmp[3]
- b3 = b
- while 1:
- flg = a == 0
- if flg:
- break
- (t1, a), b3 = divmod(b3, a), a
- b0, b1 = b1, b0 - t1 * b1
- a0, a1 = a1, a0 - t1 * a1
- if b != 1:
- raise Exception("gcd(a, b) != 1")
- res_val = a0
- res_val = res_val % b
- return res_val
- def helper(a, b):
- tmp = [0, 1, 1, 0]
- a0 = tmp[0]
- a1 = tmp[1]
- b0 = tmp[2]
- b1 = tmp[3]
- while 1:
- flg = (a == 0)
- if flg:
- break
- (t1, a), b = divmod(b, a), a
- b0, b1 = b1, b0 - t1 * b1
- a0, a1 = a1, a0 - t1 * a1
- return b, a0
- def my_mod(fir, sec):
- a, b = helper(fir, sec)
- val = b
- val = val % sec
- return val
- def return_args(text, n):
- arg_fir, arg_sec = ascii_to_int(text), num_val
- arg_thr = arg_fir
- arg_thr /= arg_sec
- return arg_fir, arg_sec, arg_thr
- def return_inverse(n):
- arg_fir, arg_sec = Sign(num_def), n
- return my_mod(arg_fir, arg_sec)
- def return_sign(text, n):
- Oracle_Connect()
- arg_fir, arg_sec, arg_thr = return_args(text, n)
- arg_inv = return_inverse(n)
- a, b, c = Sign(arg_sec), Sign(arg_thr), arg_inv
- val = reduce(lambda x, y: x * y, [a, b, c])
- val = val % n
- verify_fir, verify_sec = arg_fir, val
- flg = Verify(verify_fir, verify_sec)
- if not flg:
- print "Error!"
- else:
- print "YES!"
- return val
- def main():
- text = "Crypto is hard --- even schemes that look complex can be broken"
- n = 119077393994976313358209514872004186781083638474007212865571534799455802984783764695504518716476645854434703350542987348935664430222174597252144205891641172082602942313168180100366024600206994820541840725743590501646516068078269875871068596540116450747659687492528762004294694507524718065820838211568885027869
- val = return_sign(text, n)
- print val
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement