我只需要在C#中获取这些代码,实际上我无法在C#中找到X509EncodedKeySpec
:
byte[] keyByte = Base64.decode(publicKey);
// generate public key
X509EncodedKeySpec s = new X509EncodedKeySpec(keyByte);
KeyFactory factory = null;
try
{
factory = KeyFactory.getInstance("RSA");
}
catch (NoSuchAlgorithmException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Key pubKey = null;
try
{
pubKey = factory.generatePublic(s);
}
catch (InvalidKeySpecException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:1)
ImportSubjectPublicKeyInfo
可用您应该可以按如下方式使用它:
using (RSA rsa = RSA.Create())
{
rsa.ImportSubjectPublicKeyInfo(publicKey, out _);
//do your stuff
}
答案 1 :(得分:0)
X509EncodedKeySpec
是Java的X.509 SubjectPublicKeyInfo
版本。 .NET没有内置任何用于读取SubjectPublicKeyInfo的API。为获得最佳效果,您希望拥有完整的证书,然后使用cert.GetRSAPublicKey()
。
如果您可以将RSA模数和RSA(公共)指数值传输,那么您可以构建RSAParameters对象以加载到密钥中。
using (RSA rsa = RSA.Create())
{
rsa.ImportParameters(new RSAParameters { Modulus = modulus, Exponent = exponent });
// do public key things
}