Advertisement
marwanpro

rsa manual

Feb 21st, 2015
533
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.55 KB | None | 0 0
  1. # -*- codage: latin-1 -*-
  2. __author__ = 'Marwan'
  3.  
  4. from fractions import gcd as pgcd
  5. from mdl.primetest import prime_test
  6. from mdl.bezout import bezout
  7. from os import system
  8. import pickle
  9.  
  10.  
  11. def test_primalite():
  12.     global p
  13.     global q
  14.     global test1
  15.     if prime_test(p) is False or prime_test(q) is False:
  16.         if prime_test(p) is False:
  17.             print("Erreur: p n'est pas un nombre premier.")
  18.             p = int(input("Entrer une nouvelle valeur pour p: "))
  19.         if prime_test(q) is False:
  20.             print("Erreur: q n'est pas un nombre premier.")
  21.             q = int(input("Entrer une nouvelle valeur pour q: "))
  22.         test1 = False
  23.     else:
  24.         print("p et q sont des nombres premiers")
  25.         test1 = True
  26.         if p == q:
  27.             print("p et q doivent être différents.")
  28.             test1 = False
  29.  
  30.  
  31. def test_pgcd():
  32.     global phi
  33.     global e
  34.     global test2
  35.     if pgcd(phi, e) == 1 and e < phi:
  36.         print("Phi de n et e sont premiers entre eux.")
  37.         test2 = True
  38.         return test2
  39.     else:
  40.         print("Phi de n et e ne sont pas premiers entre eux ou e est supérieur/égal à Phi.")
  41.         e = int(input("Entrer une nouvelle valeur pour e:"))
  42.         test2 = False
  43.         return e, test2
  44.  
  45. test1 = False
  46. test2 = False
  47.  
  48. print("===============RSA===============")
  49. print()
  50. p = int(input("Entrer un nombre p premier: "))
  51. q = int(input("Entrer un nombre q premier: "))
  52. while test1 is False:
  53.     test_primalite()
  54. n = p*q
  55. phi = (p-1)*(q-1)
  56. print("n = {0}".format(n))
  57. print("phi = {0}".format(phi))
  58. e = int(input("Entrer un entier e premier avec Phi et inférieur à Phi: "))
  59. while test2 is False:
  60.     test_pgcd()
  61. print("Clé publique: ({0}, {1})".format(e, n))
  62. d = bezout(e, phi)
  63. publickeys = (e, n)
  64. privatekeys = (d, n)
  65. print("Clé privée: ({0}, {1})".format(d, n))
  66. if publickeys == privatekeys:
  67.     print("Veuillez relancer le programme avec un entier e différent.")
  68.     system('pause')
  69.     exit()
  70. print("Vos clés ont été générées.")
  71. generate_keyfiles = input("Souhaitez vous générer des fichiers clés ? (Y/N)")
  72. if generate_keyfiles == "n" or generate_keyfiles == "N":
  73.     exit()
  74. else:
  75.     with open('publickeys.rsa', 'wb') as file1:
  76.         public_rec = pickle.Pickler(file1)
  77.         public_rec.dump(publickeys)
  78.     with open('privatekeys.rsa', 'wb') as file2:
  79.         private_rec = pickle.Pickler(file2)
  80.         private_rec.dump(privatekeys)
  81.     print("Vos clés ont été sauvegardées dans les fichiers publickeys.rsa et privatekeys.rsa")
  82.     system('pause')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement