c#使用RSA公钥解密
发布人:shili8
发布时间:2024-01-05 07:11
阅读次数:58
下面是一个使用C#进行RSA公钥解密的示例代码,包含了详细的代码注释:
csharpusing System;
using System.Security.Cryptography;
using System.Text;
class Program{
static void Main()
{
try {
// 创建一个RSA实例 using (RSA rsa = RSA.Create())
{
// 加载公钥 rsa.FromXmlString("... ... ");
// 要解密的密文 byte[] encryptedData = Convert.FromBase64String("...");
// 使用公钥进行解密 byte[] decryptedData = rsa.Decrypt(encryptedData, RSAEncryptionPadding.Pkcs1);
// 将解密后的数据转换为字符串 string decryptedText = Encoding.UTF8.GetString(decryptedData);
Console.WriteLine("解密结果:");
Console.WriteLine(decryptedText);
}
}
catch (CryptographicException e)
{
Console.WriteLine("解密失败:" + e.Message);
}
}
}
在上面的示例代码中,我们首先创建了一个RSA实例,然后使用`FromXmlString`方法加载公钥。公钥的XML格式可以通过其他方式获取,例如从文件或网络中读取。
接下来,我们定义了要解密的密文,这里假设密文是Base64编码的字符串,使用`Convert.FromBase64String`方法将其转换为字节数组。
然后,我们调用`rsa.Decrypt`方法使用公钥进行解密,解密算法使用的是PKCS#1填充方式。
最后,我们将解密后的字节数组转换为字符串,使用`Encoding.UTF8.GetString`方法进行转换。
如果解密成功,我们将打印出解密结果;如果解密失败,我们将捕获`CryptographicException`异常并打印出错误信息。
请注意,上述示例代码中的公钥和密文都是占位符,需要根据实际情况进行替换。

