Python - Cifrado RSA

 
Vista:
sin imagen de perfil

Cifrado RSA

Publicado por Carlos (4 intervenciones) el 06/11/2016 21:00:38
Hola, estaba buscando un programa de cifrado RSA para python y encontré este:
#!/usr/bin/env python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# coding: utf-8 
 
 
def genkeys(bitn):
   p = genprime(bitn)
   q = genprime(bitn)
   n = p * q
   phi = (p - 1) * (q - 1)
 
   # Este numero es arbitrario 
   # cuanto mas pequeño, mas eficiente(rápido), pero menos seguro 
   e=65537
   while (phi%e) == 0:
     e=genprime(17)
 
   d = inverse_mod(e, phi)
 
   public = (n, e)
   private = (n, d)
   return public, private
 
# Convierte un string en un número 
def msg2num(s):
   n = 0
   for c in s:
       n <<= 8
       n += ord(c)
   return n
 
def cipher(s, public):
   n = msg2num(s)
   c = modex(n, public[1], public[0])
   return c
 
# Convierte un número en un string 
def num2msg(n):
   s = []
   while n > 0:
       s.insert(0, chr(n & 255))
       n >>= 8
   return ''.join(s)
 
def decipher(n, private):
   p = modex(n, private[1], private[0])
   s = num2msg(p)
   return s
 
try:
   import hashlib
except:
   print >> sys.stderr, "No se ha encontrado el modulo Hashlib, no podras firmar ni comprobar firmas"
 
def sign(msg,private):
   s = int(hashlib.sha1(msg).hexdigest(), 16)
   return modex(s,private[1],private[0])
 
def checksign(msg,sign,pub):
   s = modex(sign,pub[1],pub[0])
   h = int(hashlib.sha1(msg).hexdigest(), 16)
   return s == h
 
def _testRSA(bitn,s):
   print ("Generando claves...")
   pub,priv=genkeys(bitn)
   print ("Probando cifrado...")
   print ("Cifrando...")
   c=cipher(s,pub)
   print -c
   print ("Descifrando..."),decipher(c,priv)
   print ("Probando firmas...")
   print ("Firmando...")
   f=sign(s,priv)
   print ("Comprobando firma..."),checksign(s,f,pub)
 
if __name__==("__main__"):
 
   if len (sys.argv) >1:
        lonx=int(sys.argv[1])
   else:
       lonx=int(raw_input("Numero de bits:"))
 
Pero de da error en estas líneas:
   if len (sys.argv) >1:
        lonx=int(sys.argv[1])

Y como no sé mucho de programación no sé cuál es el problema. Si alguien me puede ayudar se lo agradecería mucho :), si este código no funciona alguien sabría decirme alguno?
Uso la versión 3.5.3 y estoy en windows 7

Muchas gracias por su atención.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Cifrado RSA

Publicado por jamesnorton28219 (1 intervención) el 30/06/2017 20:10:16
lo primero que tienes que tener claro cuando trabajas con un lenguaje como python son los modulos que necesitas para ejecutar el programa y mucho mas importante que eso es saber que es lo que hace el programa en cada linea....en este caso tienes que importar el modulo sys de esta forma
import sys
(asi al principio del programa)
Por ten el atino de leerte un manual de python y no hacer preguntas de este tipo porque parece que quieres que los demas te hagan el trabajo por eso nadie te ha respondido hasta ahora. Yo te he respondido porque estas cosas hay decirlas por lo menos una vez.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar