2017-07-06 4 views
0

Ich habe RSA öffentlichen Schlüssel in Base64 codiert. Nach der Decodierung kann ich wie RSA öffentlichen Schlüssel erhalten:Wie setze ich öffentlichen Schlüssel in RSAParameters

----- PUBLIC KEY BEGIN ----- XXXXXXXXXXXXXXXXXXXXXXX ----- END PUBLIC KEY -----

Jetzt muss ich diesen Schlüssel in RSACryptoServiceProvider importieren. Ich suchte nach einer Lösung, konnte aber nichts finden, was funktionierte. Von Stücken, die ich gefunden, habe ich solches Codebeispiel

public static string Encrypt(string input, string base64PublicKey) 
    { 
     var rsa = new RSACryptoServiceProvider(); 
     var byteKey = System.Convert.FromBase64String(base64PublicKey); 
     var byteInput = Encoding.UTF8.GetBytes(input); 

     var parameters = rsa.ExportParameters(false); 
     parameters.Modulus = byteKey; 

     rsa.ImportParameters(parameters); 

     var bytesEncrypted = rsa.Encrypt(byteInput, false); 

     var result = System.Convert.ToBase64String(bytesEncrypted); 

     return result; 
    } 

Ich nehme an, es nicht richtig funktioniert, weil ich immer Antwort mit Fehlern aus dem System bekommen, ich bin zu integrieren.

Ist es eine korrekte Methode, öffentlichen Schlüssel zu importieren? Wenn nicht wie soll ich es tun?

Antwort

1

Der öffentliche Schlüssel, den Sie haben, ist vermutlich im Format PKCS#1 codiert. Dies ist der allgemeine Standard für die Verschlüsselung öffentlicher RSA-Schlüssel.

.NET Krypto-Klassen dieses Format nicht direkt verstehen, werden Sie die ASN.1 analysieren müssen sich Codierung des Modul und öffentlichen Exponenten von Ihren Schlüssel zu erhalten und die entsprechenden Parameter ouf Ihre RSAParameters eingestellt Objekt.

Verwandte Themen