C#中RSA加密与解密的实例详解
作者:在代码的世界里游走 时间:2022-09-01 15:43:06
1. RSA加密与解密 -- 使用公钥加密、私钥解密
public class RSATool
{
public string Encrypt(string strText, string strPublicKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(strPublicKey);
byte[] byteText = Encoding.UTF8.GetBytes(strText);
byte[] byteEntry = rsa.Encrypt(byteText, false);
return Convert.ToBase64String(byteEntry);
}
public string Decrypt(string strEntryText,string strPrivateKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(strPrivateKey);
byte[] byteEntry = Convert.FromBase64String(strEntryText);
byte[] byteText = rsa.Decrypt(byteEntry, false);
return Encoding.UTF8.GetString(byteText);
}
public Dictionary<string,string> GetKey()
{
Dictionary<string, string> dictKey = new Dictionary<string, string>();
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
dictKey.Add("PublicKey", rsa.ToXmlString(false));
dictKey.Add("PrivateKey", rsa.ToXmlString(true));
return dictKey;
}
}
测试:
RSATool myRSA = new RSATool();
Dictionary<string, string> dictK = new Dictionary<string, string>();
dictK = myRSA.GetKey();
string strText = "123456";
Console.WriteLine("要加密的字符串是:{0}", strText);
string str1 = myRSA.Encrypt("123456", dictK["PublicKey"]);
Console.WriteLine("加密后的字符串:{0}", str1);
string str2 = myRSA.Decrypt(str1, dictK["PrivateKey"]);
Console.WriteLine("解密后的字符串:{0}", str2);
2. RSA加密与解密 -- 使用同一个密钥容器进行加密与解密
public class RSAToolX
{
public string Encrypt(string strText)
{
CspParameters CSApars = new CspParameters();
CSApars.KeyContainerName = "Test001";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSApars);
byte[] byteText = Encoding.UTF8.GetBytes(strText);
byte[] byteEntry = rsa.Encrypt(byteText, false);
return Convert.ToBase64String(byteEntry);
}
public string Decrypt(string strEntryText)
{
CspParameters CSApars = new CspParameters();
CSApars.KeyContainerName = "Test001";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSApars);
byte[] byteEntry = Convert.FromBase64String(strEntryText);
byte[] byteText = rsa.Decrypt(byteEntry, false);
return Encoding.UTF8.GetString(byteText);
}
}
测试 :
RSAToolX myRSA = new RSAToolX();
string strText = "123456";
Console.WriteLine("要加密的字符串是:{0}", strText);
string str1 = myRSA.Encrypt("123456");
Console.WriteLine("加密后的字符串:{0}", str1);
string str2 = myRSA.Decrypt(str1);
Console.WriteLine("解密后的字符串:{0}", str2);
总结
以上所述是小编给大家介绍的C#中RSA加密与解密的实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
来源:https://www.cnblogs.com/ChengWenHao/archive/2019/08/22/CSharpRSA.html
标签:c#,rsa,加密,解密
0
投稿
猜你喜欢
WPF自动隐藏的消息框的实例代码
2023-09-11 09:52:36
Struts2修改上传文件大小限制方法解析
2023-02-22 21:13:19
java实现切割wav音频文件的方法详解【附外部jar包下载】
2021-07-08 22:29:56
Java NIO框架Netty简单使用的示例
2022-09-08 02:51:27
在Java内存模型中测试并发程序代码
2023-11-24 20:37:55
Spring Boot 实现图片上传并回显功能
2021-10-11 17:45:20
以实例简介Java中线程池的工作特点
2023-08-11 23:04:19
解读JDK8踩坑JCE加密限制版本问题
2021-09-20 12:42:35
最详细的文件上传下载实例详解(推荐)
2021-12-12 08:18:13
介绍Jersey-Jersey入门基础
2023-11-18 06:34:26
MyBatis Plus 入门使用详细教程
2023-08-23 05:48:33
SpringBoot中shiro过滤器的重写与配置详解
2021-07-28 23:40:09
java多线程和并发包入门示例
2022-05-10 12:29:34
C#多线程系列之任务基础(一)
2022-12-09 04:48:22
Java StringBuffer与StringBuilder有什么区别
2022-12-15 22:35:12
java 深拷贝与浅拷贝机制详解
2023-02-18 19:00:59
C#自定义处理xml数据类实例
2022-07-02 11:00:39
maven中下载jar包源码和javadoc的命令介绍
2023-07-27 04:41:01
java实现给出分数数组得到对应名次数组的方法
2021-06-01 13:58:05
IntelliJ IDEA 2020.1.2激活工具下载及破解方法免费可用至2089年(强烈推荐)
2023-07-29 09:22:11