Tengo un problema a la hora de obtener la clave privada a través de la clave pública.
Código
from Crypto.PublicKey import RSA import gmpy pub = RSA.importKey("""-----BEGIN PUBLIC KEY----- MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQAA0kl7JrOq0XcvkdpibzgA x2kU/9bbd9FYS+yMqyMWTSTJOcB892YHCVtfRRdmUVJQXiWGQBq0mHmlMOREuHVb RIBrsOPNeWl4s1bu3RfY+UdlVQh4b696RkjY+EZjAwDrAtP2GKZ8xuKcnGbeyOoq SThjFxcwUpFyC6upDOhOy6pIVwIWe3DIlcuhHaw/963GN7fDJBzGr2cRunP3TYP6 4a7BtCNEVp8C4b5TaNJVb0jsrvRh5PHNlVMbCIRQGIzEn4l/X4y2sQfYCgV4Pwm7 Vq5gzxgKgjVIgItOHqs9WCmA0PuMqB2A2l0qU1JPiR7DEh2FwUUdLn+deuz3bHTB AgMBAAE= -----END PUBLIC KEY-----"""); n = long(pub.n); e = long(pub.e); print n; print e; p = 14188273085411836729; q = 280615323801319888452039197798402115977; d = long(gmpy.invert(e,(p-1)*(q-1))) print d key = RSA.construct((n,e,d,p,q)); print key.exportKey('PEM',pkcs=1); f1 = open("rsa.pem","wb") f1.write(key.exportKey('PEM',pkcs=1)) message = "Un mensaje cualquiera" signature = key.sign(message,'') print pub.verify(message,signature)
La p y la q las he obtenido usando el Sage, para conseguir factorizar el modulo. El último print da false, y si cifro un mensaje y lo descifro tampoco parece estar correcto. No se que puedo estar haciendo mal...
Espero que me podais ayudar. Gracias