Domanda

Voglio creare 2 DLL davvero semplici:

1) che firmerà un documento XML 2) che verifica che il hasnt documento XML stato modificato.

Ho provato ad utilizzare il RSACryptoServiceProvider e un contenitore di chiavi. Ma quando mi trasferisco in una macchina diversa questo non funziona come la chiave viene memorizzato nella macchina.

Voglio memorizzare la chiave nelle DLL im creazione (so che questo non è consigliato), ma non riesco proprio a capire come scrivere del codice per semplicemente firmare un documento XML e quindi verificare che esso non è stato modificato.

Quindi ho bisogno di usare chiave simmetrica per fare quello che voglio è possibile?

Pete

È stato utile?

Soluzione

È già parlare dei problemi con memorizzazione della chiave privata nella DLL, quindi non voglio ripetere che.

Fare questo:

sulla propria macchina eseguire questo codice:

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

questo emette due (lunghi) linee. Copiare quelli nel codice:

Segno:

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

Verifica:

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

Altri suggerimenti

Se si tratta solo di verificare che il documento XML non è stato modificato un semplice MD5 Checksum (o qualsiasi altro bene algoritmo di hashing) sarebbe più facile da implementare ed è quello che vi serve. Sarebbe anche tarabili su macchine diverse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top