Buenas gente!
Tengo un problema a la hora de obtener la clave privada a través de la clave pública.
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