Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- codage: latin-1 -*-
- __author__ = 'Marwan'
- from fractions import gcd as pgcd
- from mdl.primetest import prime_test
- from mdl.bezout import bezout
- from os import system
- import pickle
- def test_primalite():
- global p
- global q
- global test1
- if prime_test(p) is False or prime_test(q) is False:
- if prime_test(p) is False:
- print("Erreur: p n'est pas un nombre premier.")
- p = int(input("Entrer une nouvelle valeur pour p: "))
- if prime_test(q) is False:
- print("Erreur: q n'est pas un nombre premier.")
- q = int(input("Entrer une nouvelle valeur pour q: "))
- test1 = False
- else:
- print("p et q sont des nombres premiers")
- test1 = True
- if p == q:
- print("p et q doivent être différents.")
- test1 = False
- def test_pgcd():
- global phi
- global e
- global test2
- if pgcd(phi, e) == 1 and e < phi:
- print("Phi de n et e sont premiers entre eux.")
- test2 = True
- return test2
- else:
- print("Phi de n et e ne sont pas premiers entre eux ou e est supérieur/égal à Phi.")
- e = int(input("Entrer une nouvelle valeur pour e:"))
- test2 = False
- return e, test2
- test1 = False
- test2 = False
- print("===============RSA===============")
- print()
- p = int(input("Entrer un nombre p premier: "))
- q = int(input("Entrer un nombre q premier: "))
- while test1 is False:
- test_primalite()
- n = p*q
- phi = (p-1)*(q-1)
- print("n = {0}".format(n))
- print("phi = {0}".format(phi))
- e = int(input("Entrer un entier e premier avec Phi et inférieur à Phi: "))
- while test2 is False:
- test_pgcd()
- print("Clé publique: ({0}, {1})".format(e, n))
- d = bezout(e, phi)
- publickeys = (e, n)
- privatekeys = (d, n)
- print("Clé privée: ({0}, {1})".format(d, n))
- if publickeys == privatekeys:
- print("Veuillez relancer le programme avec un entier e différent.")
- system('pause')
- exit()
- print("Vos clés ont été générées.")
- generate_keyfiles = input("Souhaitez vous générer des fichiers clés ? (Y/N)")
- if generate_keyfiles == "n" or generate_keyfiles == "N":
- exit()
- else:
- with open('publickeys.rsa', 'wb') as file1:
- public_rec = pickle.Pickler(file1)
- public_rec.dump(publickeys)
- with open('privatekeys.rsa', 'wb') as file2:
- private_rec = pickle.Pickler(file2)
- private_rec.dump(privatekeys)
- print("Vos clés ont été sauvegardées dans les fichiers publickeys.rsa et privatekeys.rsa")
- system('pause')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement