什么是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;
}

最新文章

  1. Linux IPC System V 消息队列
  2. 串行移位锁存并行输出可级联器件74HC595
  3. 坑人的七牛CDN
  4. 【笨嘴拙舌WINDOWS】剪切板
  5. CF Tanya and Postcard
  6. exchange邮箱的”单点登陆“
  7. MFC模式对话框与非模式对话框 消息处理顺序
  8. Hadoop自定义Counter
  9. 调用QQ截图
  10. python 数据清洗之数据合并、转换、过滤、排序
  11. Elastic Stack
  12. VMware虚拟机下安装ubuntu操作系统
  13. springboot 配置文件说明
  14. ORA-01017: invalid username/password; logon denied 解决方案
  15. 非阻塞套接字编程, IO多路复用(epoll)
  16. PAT 1063 计算谱半径(20)(代码)
  17. Node.js 模块之 morgan中间件记录日志
  18. 2015 PHP框架调查结果出炉,Laravel最受欢迎!
  19. Haskell语言学习笔记(23)MonadReader, Reader, ReaderT
  20. BZOJ4144: [AMPPZ2014]Petrol(最短路 最小生成树)

热门文章

  1. 吴裕雄--天生自然HTML学习笔记:HTML 速查列表
  2. 你相信吗:空气污染改变了我们的DNA
  3. CodeFroces New Assignment 二分图匹配
  4. CORS’s source, Principle and Implementation
  5. struts2和springmvc性能比较2
  6. jquery和zepto的异同
  7. redis集群配置及python操作
  8. 使用python抓取美团商家信息
  9. C++走向远洋——40(第九周,深复制体验)
  10. 一篇文章带您读懂List集合(源码分析)