2010-02-02 13 views
8

Vorrei generare la chiave privata in java, salvarla come una stringa codificata 64 base in alcuni file e quindi crittografare alcune frasi in C# utilizzando questo file salvato. So di generare chiavi in ​​java e di codificarlo con 64 basi. La mia domanda è: come posso usare questa chiave in C#? questo è un prototipo di codice Java per salvare la chiave privata nel file di testo:RSA: come generare la chiave privata in java e usarla in 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())); 

vorrei implementare seguente funzione in C#, ma non riesco a trovare il modo di creare RSAParameters o RSACryptoServiceProvider dalla chiave privata

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

Sono sicuro che è già stato chiesto ... Non riesco proprio a trovare –

risposta

5

This page contiene consigli per la vostra situazione, dal momento che si sta scrivendo fuori PKCS # 8 tasti (con keyPair.getPrivate(). getEncoded())

con questo approccio si userebbe l'utility sul lato Java per ottenere la chiave privata nel formato PRIVATEKEYBLOB in primo luogo.

In alternativa, è possibile utilizzare BouncyCastle C# in grado di leggere la chiave (vedere ad esempio Org.BouncyCastle.Security.PrivateKeyFactory.CreateKey - è necessario decodificare Base64 innanzitutto, naturalmente).

Questa domanda precedente ha la risposta per la conversione dall'oggetto chiave aC con conseguente a RSACryptoServiceProvider: BouncyCastle RSAPrivateKey to .NET RSAPrivateKey

In terzo luogo, si potrebbe desiderare di guardare con un archivio di chiavi, per esempio PKCS # 12, che è un modo più standard (e sicuro) per l'archiviazione delle chiavi private.

+0

Grazie! Potresti consigliare qualche lettura sul keystore? Lo incontro abbastanza spesso ma non capisco il concetto. – Moisei

+0

+1, non potevo accedere all'articolo per pochi giorni perché il sito web non era disponibile, sarebbe bello se potessi incollare il codice qui o aggiungere un riferimento a siti web più persistenti come Github. – AaA

Problemi correlati