2010-02-02 3 views
8

Je voudrais générer une clé privée dans Java, l'enregistrer comme une chaîne codée 64 base dans un fichier puis crypter une phrase en C# en utilisant ce fichier enregistré. Je sais générer des clés en java et l'encoder avec 64 base. Ma question est comment puis-je utiliser cette clé en C#? C'est un prototype de code Java pour sauvegarder le fichier clé dans texte privé:RSA: Comment générer une clé privée dans Java et l'utiliser en 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())); 

Je voudrais mettre en œuvre la fonction suivante en C# mais ne peut pas trouver comment créer RSAParameters ou RSACryptoServiceProvider de clé privée

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

Je suis sûr que cela a déjà été demandé ... Je ne trouve tout simplement pas –

Répondre

5

This page contient des conseils pour votre situation, puisque vous écrivez sur PKCS # 8 touches (avec keyPair.getPrivate(). getEncoded())

en utilisant cette approche, vous utiliserait l'utilitaire du côté Java pour obtenir la clé privée dans le format PRIVATEKEYBLOB en premier lieu.

Vous pouvez également utiliser BouncyCastle C# qui peut lire la clé (voir par exemple Org.BouncyCastle.Security.PrivateKeyFactory.CreateKey - vous devez d'abord décoder Base64).

Cette question a la réponse pour la conversion de l'objet clé de la Colombie-Britannique résultant de RSACryptoServiceProvider: BouncyCastle RSAPrivateKey to .NET RSAPrivateKey

Troisièmement, vous voudrez peut-être envisager d'utiliser un fichier de clés, par exemple PKCS # 12, qui est un moyen plus standard (et sécurisé) pour stocker des clés privées.

+0

Merci! Pourriez-vous recommander une lecture sur keystore? Je le rencontre assez souvent mais je ne comprends pas le concept. – Moisei

+0

+1, je n'ai pas pu accéder à l'article depuis quelques jours parce que le site Web n'était pas disponible, ce serait génial si vous pouviez coller le code ici ou ajouter une référence à des sites Web plus persistants tels que Github. – AaA

Questions connexes