print("{0} is not a square mod {1}".format(y, q)) return False else: if debug_mode: print("{0} is a square mod {1}".format(y, q)) return True if __name__ == "__main__": login = sys.argv[1] if "-debug" in sys.argv: debug_mode = True server = Server(BASE_URL) while not compute_y(): continue #Signature de Rabin -> composé d'un couple x (message) et U (random) x = get_primal_signature(y, p, q, n, debug_mode) U = "{0:08x}".format(U) if debug_mode: print('x: {0}'.format(x)) print('U: {0}'.format(U)) print(server.query(CONFIRMATION + login, {'n': n, 's': x, 'u': U}))
BASE_URL = "http://pac.bouillaguet.info/TP5/RSA-keygen/" GET_CHALLENGE = "challenge/" GET_PK = "PK/" CONFIRMATION = "confirmation/" debug_mode = False if __name__ == "__main__": login = sys.argv[1] if "-debug" in sys.argv: debug_mode = True #Récupération de l'exposant server = Server(BASE_URL) e = server.query(GET_CHALLENGE + login)['e'] #Choix de p et q p = 1 q = 1 phi_n = 1 #Vérification de p et q - ok si p != q et que si e est premier avec phi_n while ((p == q) or (PGCD(e, phi_n) != 1)): p = get_primal_number() q = get_primal_number() phi_n = get_phi(p,q) #Calcul de n, en fonction de p et q choisis
debug_mode = True login = sys.argv[1] if login == "-debug": raise Exception("First argument must be your login...") print("Hello {0}!".format(login)) while choice != "phi" and choice != "d": choice = input("Would you resolve 'phi' part or 'd' part?") #PHI if choice == "phi": server_phi = Server(BASE_URL + RSA_RED + PHI_PART) try: #Récupération de e,n et phi if debug_mode: print("Response... ", end='') response_phi = server_phi.query(GET_CHALLENGE + login) if debug_mode: print("OK!") except: #Login faux?? if debug_mode: print("ERROR!") print("Exiting...") e = response_phi['e']