Pregunta

Quiero crear 2 dlls muy simples:

1) que va a firmar un documento XML 2) que se compruebe que el ya no haya documento xml sido modificado.

He intentado utilizar el RSACryptoServiceProvider y un contenedor de claves. Pero cuando me traslado a una máquina diferente esto no funciona como la clave está siendo almacenado en la máquina.

Quiero almacenar la clave en los archivos DLL im creación (Sé que esto no es recomendado) pero simplemente no puede encontrar la manera de escribir algo de código para firmar simplemente un documento XML y compruebe que no se ha cambiado.

Así que necesito para usar clave simétrica para hacer lo que quiero es esto posible?

Pete

¿Fue útil?

Solución

Ya menciona los problemas con el almacenamiento de la clave privada en el archivo DLL, por lo que no voy a repetir eso.

Haga lo siguiente:

En su propia máquina de ejecutar este código:

var key = new RSACryptoServiceProvider(2048);
string publicKey = key.ToXmlString(false);
string privateKey = key.ToXmlString(true);
Console.WriteLine(publicKey);
Console.WriteLine(privateKey);

esta salida a dos líneas (largos). Copiar, aquellos en los que su código:

Señal:

var privateKey = new RSACryptoServiceProvider();
privateKey.FromXmlString(/* insert the private-key XML string here */ );
privateKey.SignData(/*...*/);

Verificar:

var publicKey = new RSACryptoServiceProvider();
publicKey.FromXmlString(/* insert the public-key XML string here */ );
publicKey.VerifyData(/*...*/);

Otros consejos

Si está a punto de comprobar que el documento XML no se ha modificado un simple MD5 checksum (o cualquier otro bien algoritmo de hash) que sea más fácil de implementar y es lo que necesita. Sería también verificable en diferentes máquinas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top