Vai*_*hav 6 java bouncycastle c#-4.0 windows-phone-8
我有使用BC生成密钥对的Java代码,如下所示:
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));
Run Code Online (Sandbox Code Playgroud)
现在我想在C#中使用BC做同样的事情.我已经通过nuget包管理器下载了WP8BouncyCastle库.我写的是:
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()));
Run Code Online (Sandbox Code Playgroud)
但是我需要getEncoded()
Java中可用的方法,这在C#中的BC库中是不可用的.此getEncoded()
方法用于将给定密钥转换为X.509编码密钥.在Java的情况下,公钥被转换两次(getencoded()
和getBytes()
),我无法在C#中执行相同操作.
有什么解决方案吗?
小智 9
将以下代码用于私钥:
PrivateKeyInfo pkInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(keyPair.Private);
String privateKey = Convert.ToBase64String(pkInfo.GetDerEncoded());
Run Code Online (Sandbox Code Playgroud)
并关注公众:
SubjectPublicKeyInfo info = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public);
String publicKey = Convert.ToBase64String(info.GetDerEncoded());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17518 次 |
最近记录: |