我试图用给定的密钥对字符串进行RSA加密。(我无法更改密钥,因为我是从另一个系统请求的)
我把钥匙当作字符串,它看起来是这样的:
- CERTIFICATE-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSehIDcXho52VvAQAFfVD2CzOFAYKSfnRsuKE/nqE1O4l/X6opYgjxj/mSNk1bvNobwiRBL4uWfFnsHoQSiv1Gqzl+JQ2QQ2rUVGuNZ7d7agjYcb1LCpKPE1Q0kqLvbGyDWQx8ULC7/FJ49mMwbzIE4C9ovfdOBa0er6IDNSW0IQIDAQAB-----END证书
现在,我试图用多种方式加密字符串,但没有一种方法有效。我尝试的最后一个解决方案如下:
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;
}当涉及到以下情况时,它总是抛出异常:
rsaPublic.FromXmlString(publicKey);那么我能做些什么来用RSA加密字符串呢?我需要它,因为我想实现API:Communicating-with-the-Miniserver.pdf
在第5页下6。你可以看到的要求!!
发布于 2018-11-26 13:14:36
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)就可以正常工作了。
https://stackoverflow.com/questions/51099703
复制相似问题