2009-09-21 30 views
5
msg = "this is msg to encrypt" 

pub_key = M2Crypto.RSA.load_pub_key('mykey.py') // This method is taking PEM file. 

encrypted = pub_key.public_encrypt(msg, M2Crypto.RSA.pkcs1_padding) 

Ahora intento dar un archivo que contenga la clave pública de formato radix64 como un parámetro en este método y no se puede obtener el resultado esperado, es decir, el cifrado utilizando la clave pública de formato radix64.¿Cómo encriptar usando la clave pública?

¿Hay algún otro método en la API de Python que pueda cifrar msg usando la clave pública después de probar algún mecanismo?

Estoy obteniendo mi clave pública del servidor de claves públicas con algunas envolturas de HTML y en formato radix64. ¿Cómo puedo convertir la clave pública para que pueda ser aceptada por cualquier método de encriptación?

+0

¿lo iniciaste (sry si fallo i neva usó python para encriptar: P)? – n00b

+0

¿Dónde está el problema? ¿Está en 'load_pub_key()' o está en 'public_encrypt()'? Por favor edite su pregunta para incluir el error incluyendo cualquier rastreo. También sería muy útil si pudiera incluir el archivo de clave pública, es decir, el contenido de 'mykey.py' – mhawke

Respuesta

0

Hay un error en algún lugar de la clave pública. Parece ser una clave pública de PGP pero con diferentes longitudes de línea, por lo que no se puede usar directamente como una clave pública de RSA.

6

En caso de que alguien busca a esta pregunta, que estaba recibiendo el mismo mensaje de error:

M2Crypto.RSA.RSAError: no start line 

En mi caso, resultó que las llaves eran de tipo Unicode. Esto se resolvió volviendo a convertir la clave en ascii:

key.encode('ascii') 
Cuestiones relacionadas