2014-02-25 7 views
5

Ich habe Java-Code zur Erzeugung von Keypair BC wie folgt verwendet:Gene Keypair Hüpfburg mit

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
     keyGen.initialize(1024); 
     KeyPair key = keyGen.generateKeyPair(); 
     PrivateKey priv = key.getPrivate(); 
     PublicKey pub = key.getPublic(); 
     String privateKey = new String(Base64.encode(priv.getEncoded(), 0,priv.getEncoded().length, Base64.NO_WRAP)); 
     String publicKey1 = new String(Base64.encode(pub.getEncoded(), 0,pub.getEncoded().length, Base64.NO_WRAP)); 
     String publicKey = new String(Base64.encode(publicKey1.getBytes(),0, publicKey1.getBytes().length, Base64.NO_WRAP)); 

Jetzt möchte ich in C# BC gleich zu tun. Ich habe die WP8BouncyCastle-Bibliothek über den nugget-Paket-Manager heruntergeladen. Ich habe geschrieben:

var kpgen = new RsaKeyPairGenerator(); 

      kpgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024)); 

      var keyPair = kpgen.GenerateKeyPair(); 
      AsymmetricKeyParameter privateKey = keyPair.Private; 
      AsymmetricKeyParameter publicKey = keyPair.Public; 


      string prvKey = Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes(privateKey.ToString())); 
      string pubKey = Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes(publicKey.ToString())); 
      string pubKey1 = Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes(pubKey.ToString())); 

Aber ich brauche getEncoded() Methode in Java, die in BC-Bibliothek in C# nicht verfügbar ist. Diese Methode wird verwendet, um bestimmte Schlüssel in X.509-Schlüssel zu konvertieren. Im Fall von Java, öffentliche Schlüssel zweimal konvertiert (getencoded() und getBytes()), ich bin nicht in der Lage, dies in C# zu tun.

Gibt es eine Lösung?

Antwort

6

Verwenden Sie den folgenden Code für einen privaten Schlüssel:

PrivateKeyInfo pkInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(keyPair.Private); 
String privateKey = Convert.ToBase64String(pkInfo.GetDerEncoded()); 

und folgende für Öffentlichkeit:

SubjectPublicKeyInfo info = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public); 
String publicKey = Convert.ToBase64String(info.GetDerEncoded()); 
+0

ich es von anderen blog.Anyways thanx bekam. – Vaibhav

+12

Sie könnten zumindest schreiben die Blog-Link:/ –

+0

Namespaces: Org.BouncyCastle.Asn1.Pkcs.PrivateKeyInfo, Org.BouncyCastle.Pkcs.PrivateKeyInfoFactory, Org.BouncyCastle.Asn1.X509.SubjectPublicKeyInfo, Org.BouncyCastle.X509.SubjectPublicKeyInfoFactory –

Verwandte Themen