-
RSA的加解密过程(转自CSDN,学习用)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
RSA的加解密过程
public void StartDemo()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
//RSA的加解密过程:
// 有 rsa1 和 rsa2 两个RSA对象。
// 现在要 rsa2 发送一段信息给 rsa1, 则先由 rsa1 发送“公钥”给 rsa2
// rsa2 获取得公钥之后,用来加密要发送的数据内容。
// rsa1 获取加密后的内容后,用自己的私钥解密,得出原始的数据内容。
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();
RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string publickey;
publickey=rsa1.ToXmlString(false); //导出 rsa1 的公钥
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string plaintext;
plaintext="你好吗?这是用于测试的字符串。"; //原始数据
Console.WriteLine("原始数据是:\n{0}\n",plaintext);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
rsa2.FromXmlString(publickey); //rsa2 导入 rsa1 的公钥,用于加密信息
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//rsa2开始加密
byte[] cipherbytes;
cipherbytes=rsa2.Encrypt(
Encoding.UTF8.GetBytes(plaintext),
false);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*//////////////////////////////////////////////*/
Console.WriteLine("加密后的数据是:");
for(int i=0; i< cipherbytes.Length; i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Console.Write("{0:X2} ",cipherbytes[i]);
}
Console.WriteLine("\n");
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*//////////////////////////////////////////////*/
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//rsa1开始解密
byte[] plaintbytes;
plaintbytes = rsa1.Decrypt(cipherbytes,false);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Console.WriteLine("解密后的数据是:");
Console.WriteLine(Encoding.UTF8.GetString(plaintbytes));
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Console.ReadLine();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
}
-
相关阅读:
C# 通过 probing 指定 dll 寻找文件夹
C# 通过 probing 指定 dll 寻找文件夹
WPF 一个性能比较好的 gif 解析库
WPF 一个性能比较好的 gif 解析库
PowerShell 通过 WMI 获取系统安装的驱动
PowerShell 通过 WMI 获取系统安装的驱动
win10 uwp 好看的时间选择控件
PHP ftp_ssl_connect() 函数
PHP ftp_size() 函数
PHP ftp_site() 函数
-
原文地址:https://www.cnblogs.com/hanguoji/p/581173.html
Copyright © 2020-2023
润新知