Frage

Ich möchte 2 wirklich einfach DLLs erstellen:

1), die ein XML-Dokument unterzeichnen 2), die prüft, ob das XML-Dokument hasnt geändert.

Ich habe versucht, die RSACryptoServiceProvider und einen Schlüsselcontainer verwenden. Aber wenn ich zu einer anderen Maschine bewege dies nicht funktioniert als Schlüssel in der Maschine gespeichert wird.

Ich möchte den Schlüssel in den DLLs speichern im, zu schaffen (ich weiß, dass dies nicht empfehlenswert ist), aber ich kann einfach nicht herausfinden, wie einige Code zu schreiben, um einfach ein XML-Dokument unterzeichnen und dann überprüfen, dass es nicht geändert wurde.

So muß ich symmetrische Schlüssel verwenden, um zu tun, was ich will, ist das möglich?

Pete

War es hilfreich?

Lösung

Sie eigentlich schon erwähnt, die Probleme mit dem privaten Schlüssel in der DLL zu speichern, damit ich nicht das wiederholen.

Tun Sie dies:

Auf Ihrem eigenen Rechner diesen Code ausführen:

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

Diese gibt zwei (lang) Linien. Kopieren Sie diese in Ihren Code ein:

Zeichen:

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

Überprüfen Sie:

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

Andere Tipps

Wenn es nur um zu überprüfen, ob Ihr XML-Dokument nicht verändert wurde eine einfache MD5-Prüfsumme (oder jede andere gute Hash-Algorithmus) wäre einfacher zu implementieren und ist das, was Sie brauchen. Es würde auf verschiedenen Maschinen auch verifyable sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top