Ver - / Entschlüsselung in C# mit Zertifikat
Ich habe Probleme bei der Suche nach einem guten Beispiel in der ver - /entschlüsseln von strings in C# mit einem Zertifikat. Ich war in der Lage zu finden und zu implementieren, ein Beispiel für Unterzeichnung und Validierung einer Signatur, wie unten gezeigt. Könnte mir jemand zeigen, um eine einfache, ähnliches Beispiel für die Verschlüsselung?
private static string Sign(RSACryptoServiceProvider privateKey, string content)
{
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding ();
byte[] data = encoding.GetBytes(content);
byte[] hash = sha1.ComputeHash(data);
//Sign the hash
var signature = privateKey.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
return Convert.ToBase64String(signature);
}
public static bool Verify(RSACryptoServiceProvider publicKey, string content, string hashString)
{
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding ();
byte[] data = encoding.GetBytes(content);
byte[] hash = sha1.ComputeHash(data);
return publicKey.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), Convert.FromBase64String(hashString));
}
Fragen Sie gewusst wie: laden Sie ein Zertifikat für die Verwendung mit RSA oder haben Sie eine RSACryptoServiceProvider bereits geladen, mit dem Schlüssel aus cert?
Haben Sie gesehen, post?
Hinweis: Sie würden/können nur mit RSA zu verschlüsseln, die kleine Mengen an Daten, anstatt Sie zu beliebigen Längen von text.
Ich habe bereits ein RSACryptoServiceProvider geladen mit privaten/öffentlichen Schlüsseln. Aus einige der Forschung, es ist mein Verständnis, dass ich hätte tun müssen, die schnellere, symmetrische Verschlüsselung zum verschlüsseln der Daten und dann die langsameren, die asymmetrische Verschlüsselung mit dem Zertifikat zum verschlüsseln des Schlüssels. Was ich Probleme habe mit Weben alle online-Beispiele werden gemeinsam in einer encrypt/decrypt-Funktion wie für die Unterzeichnung.
Haben Sie gesehen, post?
Hinweis: Sie würden/können nur mit RSA zu verschlüsseln, die kleine Mengen an Daten, anstatt Sie zu beliebigen Längen von text.
Ich habe bereits ein RSACryptoServiceProvider geladen mit privaten/öffentlichen Schlüsseln. Aus einige der Forschung, es ist mein Verständnis, dass ich hätte tun müssen, die schnellere, symmetrische Verschlüsselung zum verschlüsseln der Daten und dann die langsameren, die asymmetrische Verschlüsselung mit dem Zertifikat zum verschlüsseln des Schlüssels. Was ich Probleme habe mit Weben alle online-Beispiele werden gemeinsam in einer encrypt/decrypt-Funktion wie für die Unterzeichnung.
InformationsquelleAutor Ilya | 2017-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pro die .NET Framework-team die Führung (Suche nach "Kryptographie-Updates", es scheint nicht zu sein, ein Anker, in der Nähe-oder, schauen Sie einfach die code-Beispiele).
Entschlüsseln wäre also
Vorsichtsmaßnahmen:
Verschlüsseln nicht den privaten Schlüssel nutzen, so dass selbst wenn Sie einen privaten Schlüssel (fähig) Schlüssel Griff der Schlüssel provider unter Umständen bereit, um die operation ohne eine PIN-Abfrage. Und... ich sehe, dass die öffentlichen/privaten Teile sind rückwärts in der Probe. Eep. Die Aktualisierung meiner Antwort 🙂
Ich denke, es wäre für ihn auch nicht die Eingabeaufforderung für die pin, weil der private Schlüssel ist codiert auf das CAC, so dass, wenn die CAC ist nicht vorhanden, es gibt keine Möglichkeit zu entschlüsseln. Ich tauschte den code wie in der aktualisierten Beispiel, aber jetzt am entschlüsseln, bekomme ich "Bad Taste" - Fehler.
Also zur Erinnerung: Verschlüsseln mit GetRSAPublicKey (), dann Entschlüsseln mit GetRSAPrivateKey() = "Bad-Taste" auf entschlüsseln. Verschlüsseln mit GetRSAPrivateKey (), dann Entschlüsseln mit GetRSAPublicKey() = "der Schlüssel existiert nicht." auf entschlüsseln.
Erhalten Sie die Bad-Taste Fehler beim Aufruf von
Decrypt
mit dem RSACryptoServiceProvider-Objekt, das Sie bereits arbeiten? Wenn Zeichen arbeitet, aber Entschlüsseln nicht, das könnte eine Einstellung Berechtigungen in den privaten Schlüssel (dass es erstellt wurde, als Unterschrift).InformationsquelleAutor bartonjs