Hi,

Base64 data by itself isn't PEM data, there need to be headers and
footers around it. If you have a look at what the PemWriter produces you
should get the idea.

In this case you can get by with

using Org.BouncyCastle.Security;
using Org.BouncyCastle.Utilities.Encoders;

byte[] keyData = Base64.Decode("MIIC....");

AsymmetricKeyParameter privKey = PrivateKeyFactory.CreateKey(keyData);

Regards,

David

On 13/10/15 22:04, Lingfeng Zhuang wrote:
> I generate private key in java, but failed load in C# with BouncyCastle.
>
> C#
>             PemReader pemReader = new PemReader(new StringReader(
>              
> @"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJx5AYmcTmkHIH3qUFmLw7pmPoTS
> pAS/1RnobIMSnjk5L3dgzvB47Q+24XZ1G4o/H/K8ZoCBOrQ61cFWKLzg8jr756n15c/O9L95YSkl
> OhjGvf3kIw+3dphhfkWuWrH1iIxZ5Q9zxhu8H0zfWTB7XPYVuwoPz1GRDr9Co9+sJi4HAgMBAAEC
> gYB0B69CMixa6bQIazbGEERF9wepSuHhu7b0jUvaLnYyDNvL9HfADowMORsb0l9ntsOkJl0EMdAs
> Ueysf42Z8lzsgp4VbTUsbwmX7lsS9fPY1fTVLDLZ8koOco+h+U/aXF10vuSnbJJqDbEDVqOWeGOz
> vcIkP+5KZ1agZvcLj/f9EQJBANh2Hygv3UcUTRUcOvkVvCXdl4pg3DvjPpG6T1be2ZZqpclDpqJn
> 4q7bC7lk6JVSXuCvuu5tZYGext1B4N0btOMCQQC5DcWIHFJm4+W5Hb4CeGCqHixr5oQSlxZGvdE7
> JPjPFo/oy0PVA6Aj6YHurjmc2de1NUWIQgpJ0bgfIrTS4M+NAkAeozlturibIuh2IHTIZKcoxOB6
> GZOSdmuYvMIWDZzGiXnFruma+xE+popWR04UNIBxVO4kaR+A5TRIhNaK9Sz5AkBcbquO7A6gxA63
> 40pIc5ZdAstPbgnkO0FuPlvnPfVlgzCIqBcOrEvuBDHZZX7zgMBFDAHaKJp4+t8L9kr51j71AkEA
> lPVyDQfgzQpFDjdcnJe+rgIi0Q9hrcJmI2N3hP2vhX1Kdh+JzAeAdbYppPCVqO/Ovv+akES8hu8s
> uKiWr7FfxA=="));
>             object obj = pemReader.ReadObject();
>
> *obj is null.*
>
> JAVA Source Code:
>
> import java.security.KeyPair;
> import java.security.KeyPairGenerator;
> import java.security.PrivateKey;
> import java.security.PublicKey;
> import java.security.SecureRandom;
>
> public class RSAEncrypt {
> public static void createKeyPairs() throws Exception {
> // create the keys
> KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
> generator.initialize(1024, new SecureRandom());
> KeyPair pair = generator.generateKeyPair();
> PublicKey pubKey = pair.getPublic();
> PrivateKey privKey = pair.getPrivate();
> byte[] pk = pubKey.getEncoded();
> byte[] privk = privKey.getEncoded();
> String strpk = new String(getASE64FromBytes(pk));
> String strprivk = new String(getASE64FromBytes(privk));
>
> System.out.println("PublicKey Base64:\r\n" + strpk);
> System.out.println();
> System.out.println("PrivateKey Base64:\r\n" + strprivk);
> }
>
> public static void main(String[] args) throws Exception {
> createKeyPairs();
> }
>
> public static String getASE64FromBytes(byte[] s) {
> if (s == null)
> return null;
> return (new sun.misc.BASE64Encoder()).encode(s);
> }
> }
>
> JAVA console output:
>
> PublicKey Base64:
> MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCceQGJnE5pByB96lBZi8O6Zj6E0qQEv9UZ6GyD
> Ep45OS93YM7weO0PtuF2dRuKPx/yvGaAgTq0OtXBVii84PI6++ep9eXPzvS/eWEpJToYxr395CMP
> t3aYYX5Frlqx9YiMWeUPc8YbvB9M31kwe1z2FbsKD89RkQ6/QqPfrCYuBwIDAQAB
>
> PrivateKey Base64:
> MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJx5AYmcTmkHIH3qUFmLw7pmPoTS
> pAS/1RnobIMSnjk5L3dgzvB47Q+24XZ1G4o/H/K8ZoCBOrQ61cFWKLzg8jr756n15c/O9L95YSkl
> OhjGvf3kIw+3dphhfkWuWrH1iIxZ5Q9zxhu8H0zfWTB7XPYVuwoPz1GRDr9Co9+sJi4HAgMBAAEC
> gYB0B69CMixa6bQIazbGEERF9wepSuHhu7b0jUvaLnYyDNvL9HfADowMORsb0l9ntsOkJl0EMdAs
> Ueysf42Z8lzsgp4VbTUsbwmX7lsS9fPY1fTVLDLZ8koOco+h+U/aXF10vuSnbJJqDbEDVqOWeGOz
> vcIkP+5KZ1agZvcLj/f9EQJBANh2Hygv3UcUTRUcOvkVvCXdl4pg3DvjPpG6T1be2ZZqpclDpqJn
> 4q7bC7lk6JVSXuCvuu5tZYGext1B4N0btOMCQQC5DcWIHFJm4+W5Hb4CeGCqHixr5oQSlxZGvdE7
> JPjPFo/oy0PVA6Aj6YHurjmc2de1NUWIQgpJ0bgfIrTS4M+NAkAeozlturibIuh2IHTIZKcoxOB6
> GZOSdmuYvMIWDZzGiXnFruma+xE+popWR04UNIBxVO4kaR+A5TRIhNaK9Sz5AkBcbquO7A6gxA63
> 40pIc5ZdAstPbgnkO0FuPlvnPfVlgzCIqBcOrEvuBDHZZX7zgMBFDAHaKJp4+t8L9kr51j71AkEA
> lPVyDQfgzQpFDjdcnJe+rgIi0Q9hrcJmI2N3hP2vhX1Kdh+JzAeAdbYppPCVqO/Ovv+akES8hu8s
> uKiWr7FfxA==
>
> Thanks!
>

Reply via email to