2010-02-02 9 views
8

Chciałbym wygenerować klucz prywatny w java, zapisz go jako 64-bitowy zakodowany ciąg w jakimś pliku , a następnie zaszyfruj frazę w C#, używając tego zapisanego pliku. Wiem, aby generować klucze w języku Java i kodować je za pomocą 64 baz. Moje pytanie brzmi: jak używać tego klucza w języku C#? Jest to prototyp kodu Java, aby zapisać klucz prywatny do pliku tekstowego:RSA: Jak wygenerować klucz prywatny w java i używać go w języku C#?

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())); 

chciałbym realizować następujące funkcje w C#, ale nie mogę znaleźć jak tworzyć RSAParameters lub RSACryptoServiceProvider od klucza prywatnego

public static string DecryptData(string privateKey64Base, string data64Base) 
{ 
    // create using privateKey64Base 
    // create RSACryptoServiceProvider rsa using RSAParameters above 
    // byte[] encryptedData = rsa.Encrypt(Convert.FromBase64String(data64Base); 
} 
+0

Jestem pewien, że już zostało zadane ... Po prostu nie mogę znaleźć –

Odpowiedz

5

This page zawiera porady dla danej sytuacji, ponieważ piszesz z PKCS # 8 klawiszy (z keyPair.getPrivate(). getEncoded())

Stosując to podejście ty użyłby narzędzia po stronie Java, aby najpierw uzyskać klucz prywatny do formatu PRIVATEKEYBLOB.

Alternatywnie, możesz użyć BouncyCastle C#, który może odczytać klucz (patrz np. Org.BouncyCastle.Security.PrivateKeyFactory.CreateKey - najpierw musisz najpierw dekodować Base64).

Ten poprzednie pytanie ma odpowiedź dla konwersji z powstałego obiektu kluczowego pne do RSACryptoServiceProvider: BouncyCastle RSAPrivateKey to .NET RSAPrivateKey

Po trzecie, warto przyjrzeć się za pomocą kluczy, np PKCS # 12, który jest bardziej standardowym (i bezpiecznym) sposobem przechowywania kluczy prywatnych.

+0

Dzięki! Czy możesz polecić jakiekolwiek czytanie na magazynie kluczy? Spotykam się dość często, ale nie rozumiem tej koncepcji. – Moisei

+0

+1, Nie mogłem uzyskać dostępu do artykułu przez kilka dni, ponieważ strona nie była dostępna, byłoby świetnie, gdyby można było wkleić kod tutaj lub dodać odniesienie do bardziej trwałych stron internetowych, takich jak Github. – AaA