C# RSACryptoServiceProvider 加密解密 RSA 加密解密
2024-09-06 23:18:43
什么是RSA:RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥 推导出 解密密钥在计算上是不可行的”密码体制。
下附代码,在控制台中粘贴在启动类即可使用,需引用(using System.Security.Cryptography)命名空间 ;
/// <summary>
/// 获取加密所使用的key,RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
/// </summary>
public static void GetKey()
{
string PublicKey = string.Empty;
string PrivateKey = string.Empty;
RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider();
PublicKey = rSACryptoServiceProvider.ToXmlString(false); // 获取公匙,用于加密
PrivateKey = rSACryptoServiceProvider.ToXmlString(true); // 获取公匙和私匙,用于解密 //Console.WriteLine("PublicKey is {0}", PublicKey); // 输出公匙
//Console.WriteLine("PrivateKey is {0}", PrivateKey); // 输出密匙
// 密匙中含有公匙,公匙是根据密匙进行计算得来的。 using (StreamWriter streamWriter = new StreamWriter("PublicKey.xml"))
{
streamWriter.Write(rSACryptoServiceProvider.ToXmlString(false));// 将公匙保存到运行目录下的PublicKey
}
using (StreamWriter streamWriter = new StreamWriter("PrivateKey.xml"))
{
streamWriter.Write(rSACryptoServiceProvider.ToXmlString(true)); // 将公匙&私匙保存到运行目录下的PrivateKey
}
}
/// <summary>
/// 加密
/// </summary>
/// <param name="str">需要加密的明文</param>
/// <returns></returns>
private static byte[] Encryption(string str)
{
RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider();
using (StreamReader streamReader = new StreamReader("PublicKey.xml")) // 读取运行目录下的PublicKey.xml
{
rSACryptoServiceProvider.FromXmlString(streamReader.ReadToEnd()); // 将公匙载入进RSA实例中
}
byte[] buffer = Encoding.UTF8.GetBytes(str); // 将明文转换为byte[] // 加密后的数据就是一个byte[] 数组,可以以 文件的形式保存 或 别的形式(网上很多教程,使用Base64进行编码化保存)
byte[] EncryptBuffer = rSACryptoServiceProvider.Encrypt(buffer, false); // 进行加密 //string EncryptBase64 = Convert.ToBase64String(EncryptBuffer); // 如果使用base64进行明文化,在解密时 需要再次将base64 转换为byte[]
//Console.WriteLine(EncryptBase64);
return EncryptBuffer;
}
private static string Decrypt(byte[] buffer)
{
RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider();
using (StreamReader streamReader = new StreamReader("PrivateKey.xml")) // 读取运行目录下的PrivateKey.xml
{
rSACryptoServiceProvider.FromXmlString(streamReader.ReadToEnd()); // 将私匙载入进RSA实例中
}
// 解密后得到一个byte[] 数组
byte[] DecryptBuffer = rSACryptoServiceProvider.Decrypt(buffer, false); // 进行解密
string str = Encoding.UTF8.GetString(DecryptBuffer); // 将byte[]转换为明文 return str;
}
最新文章
- Linux IPC System V 消息队列
- 串行移位锁存并行输出可级联器件74HC595
- 坑人的七牛CDN
- 【笨嘴拙舌WINDOWS】剪切板
- CF Tanya and Postcard
- exchange邮箱的”单点登陆“
- MFC模式对话框与非模式对话框 消息处理顺序
- Hadoop自定义Counter
- 调用QQ截图
- python 数据清洗之数据合并、转换、过滤、排序
- Elastic Stack
- VMware虚拟机下安装ubuntu操作系统
- springboot 配置文件说明
- ORA-01017: invalid username/password; logon denied 解决方案
- 非阻塞套接字编程, IO多路复用(epoll)
- PAT 1063 计算谱半径(20)(代码)
- Node.js 模块之 morgan中间件记录日志
- 2015 PHP框架调查结果出炉,Laravel最受欢迎!
- Haskell语言学习笔记(23)MonadReader, Reader, ReaderT
- BZOJ4144: [AMPPZ2014]Petrol(最短路 最小生成树)