2010-01-10 21 views
13

Estoy intentando encriptar y luego descifrar archivos usando encriptación asimétrica. Creé un certificado de prueba con makecert y lo instalé en mi tienda local de máquinas personales. En el futuro tendré que instalar este certificado en varios servidores, por eso lo he creado con el indicador "-pe", es decir, con una clave privada exportable. Los certificados se han creado e instalado con éxito, veo la nota "Tiene una clave privada que corresponde a este certificado" en mmc.Excepción de "clave incorrecta" para certificados con clave privada exportable

Ahora estoy tratando de cifrar datos con RSACryptoServiceProvider en .NET 3.5. Y tiene éxito. Pero cuando intento descifrarlo, aparece la excepción de "Clave incorrecta".

Si creo el certificado sin la opción "-pe", el mismo código funciona bien para el descifrado. Aquí está el código:

RSA rsaKey = (RSA)myCertificate.PrivateKey; 
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)rsaKey; 
byte[] plainText = rsaCsp.Decrypt(encryptedText, true); 

También he intentado otro método, usando System.Security.Cryptography.Pkcs espacio de nombres:

EnvelopedCms envelope = new EnvelopedCms(); 
envelope.Decode(encryptedText); 
envelope.Decrypt(); 
byte[] plainText = envelope.ContentInfo.Content; 

El resultado fue el mismo ... ¿Alguien puede ayudar ?

Respuesta

21

Asegúrese de que la clave que está utilizando se haya creado con "-sky Exchange" si usa makecert.exe. Sin esto, solo puede usar la clave para firmar y autenticar, no el cifrado/descifrado, que es el caso de uso que está implementando aquí.

+0

Gracias señor, exactamente lo que me faltaba – KodeKreachor

+1

Esto salvó el día ... gracias por la respuesta Y la explicación. – granadaCoder

Cuestiones relacionadas