首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSA公钥加密

RSA公钥加密
EN

Stack Overflow用户
提问于 2018-06-29 10:29:24
回答 1查看 2.3K关注 0票数 0

我试图用给定的密钥对字符串进行RSA加密。(我无法更改密钥,因为我是从另一个系统请求的)

我把钥匙当作字符串,它看起来是这样的:

- CERTIFICATE-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSehIDcXho52VvAQAFfVD2CzOFAYKSfnRsuKE/nqE1O4l/X6opYgjxj/mSNk1bvNobwiRBL4uWfFnsHoQSiv1Gqzl+JQ2QQ2rUVGuNZ7d7agjYcb1LCpKPE1Q0kqLvbGyDWQx8ULC7/FJ49mMwbzIE4C9ovfdOBa0er6IDNSW0IQIDAQAB-----END证书

现在,我试图用多种方式加密字符串,但没有一种方法有效。我尝试的最后一个解决方案如下:

代码语言:javascript
复制
public static string RSA(string payload, string publicKey)
{
    byte[] toEncryptData = Encoding.ASCII.GetBytes(payload);

    RSACryptoServiceProvider rsaPublic = new RSACryptoServiceProvider();
    rsaPublic.FromXmlString(publicKey);

    byte[] encryptedRSA = rsaPublic.Encrypt(toEncryptData, false);
    string EncryptedResult = Encoding.Default.GetString(encryptedRSA);

    return EncryptedResult;
}

当涉及到以下情况时,它总是抛出异常:

代码语言:javascript
复制
rsaPublic.FromXmlString(publicKey);

那么我能做些什么来用RSA加密字符串呢?我需要它,因为我想实现API:Communicating-with-the-Miniserver.pdf

在第5页下6。你可以看到的要求!!

EN

回答 1

Stack Overflow用户

发布于 2018-11-26 13:14:36

代码语言:javascript
复制
public static string ConvertToXmlPublicJavaKey(string publicJavaKey)
{
    RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicJavaKey));
    string xmlpublicKey = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
        Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
        Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));
    return xmlpublicKey;
}

PublicKeyFactory类来自BouncyCastle.Crypto,您可以搜索它以获得更多信息。

那么你的rsaPublic.FromXmlString(publicKey)就可以正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51099703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档