RSA: Wie generieren Sie einen privaten Schlüssel auf java und in C#?
Möchte ich erzeugen privater Schlüssel, die in java, speichern Sie es als base-64-codierte Zeichenfolge in einer Datei
und dann verschlüsseln Satz in C# unter Verwendung dieser gespeicherten Datei.
Ich weiß zum erzeugen der Schlüssel in java und encode es mit 64 Basis.
Meine Frage ist, wie kann ich diesen Schlüssel verwenden, die in C#?
Dies ist ein java-code-Prototypen zu sparen-private key in text-Datei:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(1024, RSAKeyGenParameterSpec.F4);
keyGen.initialize(spec);
KeyPair keyPair = keyGen.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
writeToFile("privateKey", Base64.encode(keyPair.getPrivate().getEncoded()));
Ich würde gerne implementieren Sie folgende Funktion in C# kann aber nicht herausfinden, wie die zu erstellen RSAParameters oder
RSACryptoServiceProvider von den privaten Schlüssel
public static string DecryptData(string privateKey64Base, string data64Base)
{
//create using privateKey64Base
//create RSACryptoServiceProvider rsa using RSAParameters above
//byte[] encryptedData = rsa.Encrypt(Convert.FromBase64String(data64Base);
}
- Ich bin mir sicher, dass schon gestellt wurde... ich kann einfach nicht finden
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf dieser Seite enthält Ratschläge für Ihre situation, da Sie das schreiben aus PKCS#8-Schlüssel (mit dem Schlüsselpaar.getPrivate().getEncoded())
Verwendung diese Vorgehensweise verwenden Sie, das Dienstprogramm auf der Java-Seite, um die privaten Schlüssel in den PRIVATEKEYBLOB format in den ersten Platz.
Alternativ können Sie BouncyCastle C#, die den Schlüssel Lesen können (siehe z.B. Org.BouncyCastle.Sicherheit.PrivateKeyFactory.CreateKey - Sie müssten Base64 decodieren ersten natürlich).
Diese Vorherige Frage hat die Antwort für die Umwandlung von der daraus resultierenden BC-key-Objekt, RSACryptoServiceProvider: BouncyCastle RSAPrivateKey zu .NET RSAPrivateKey
Drittens, möchten Sie vielleicht zu schauen, mit einem keystore, z.B. PKCS#12, die eine standard - (und sichere) Weg für die Speicherung von private keys.
hier ist ein Beispielcode für wen fragte:
Kredit @peter-dettman