C# RSA加密和解密,RSA生成私钥和公钥
创作时间:
作者:
@小白创作中心
C# RSA加密和解密,RSA生成私钥和公钥
引用
CSDN
1.
https://blog.csdn.net/jonnysun/article/details/144291162
C# RSA加密和解密,RSA生成私钥和公钥(使用XML格式秘钥)
目录
- 前言
- 生成xml格式的公钥和私钥
- PrivateKey
- PublicKey
- 测试加密、解密
- 方案1:RSA公钥加密,RSA私钥解密
- 方案2:RSA私钥加密,RSA私钥解密
- 数字签名、验签
- RsaHelper类
前言
网上有大量RSA加密解密解决方案,包括开源Nuget包和源码,作者测试过多种方案,最后选择本文介绍的方案,简单,代码少,效率高!RsaHelper 类能够生成公钥和私钥,不需要在网上在线生成公钥和私钥啦!优秀方案,推荐给大家!
生成xml格式的公钥和私钥
RsaHelper.GetXmlKey(out var privatekey1, out var publickey1);
PrivateKey
<RSAKeyValue><Modulus>0nMMhiGAklb2URWmQsxABYYdrVqyiXfd9kfEVgBsdb39kAw6ivdvOs4ahYWbutcQRq37qRqlRHHAguDxcTWmxpWsFmd9c5DIwvOyXrmynSgGdEVzu5NrCfZlLI7WwvFSQxF/3smdgXQxXYcYwdItV8dXd3CxBaqWS92OzMLkIr0=</Modulus><Exponent>AQAB</Exponent><P>60q62GF9otYbzo6o7Ux1ITNzdxzahBxw6uZ6f1ph+nu+dq/90DQlwxXHKA0T9Y2acw3NjQKg6QNdDvfbjO0Euw==</P><Q>5PiaMXTNBpCO0Yr7T6Cvp7eRMzg79IoVw88bl0dvZ3jNYPOzHMBeOA7E7kWExFNBXlxKN6J0Pon5FVnb2++65w==</Q><DP>1S0axgrmGk9kWCvWj1DTWmZUOdnxfPqLr7drytCnrprIwJ3JFwb4I50qmHXo3HQUOCOMVTLJePPsLzCPQUpJGw==</DP><DQ>lcjrVZ8K4FiAlSNN83Eyd4zmN5N55SbPxiAd9ICOqCmmcN37NbvB5voCabygda3g/VFyW6KyWJb5krYN1Xql0Q==</DQ><InverseQ>M2ggLAOBDR3WxHNI5pZeQIEk13oEQAUMLJCS7ahiFSEowleDhf7DvZVEUXwS9L2abvxunhnLkT8tyn/svy+V9w==</InverseQ><D>iejQ5TkhK0UHp307dfypW7VWz1pnM0S01QaUuBMRAFufxXzuBFE/t9aGdMdolRkIVnj/OQL4GJE+qcXFEv4oqjv/eO/pchmnI+/sXxESyt3wecO6YlHXQ3x/qWhesYnUzRSCoB9BMtHXv4xan2WIAZfYlWCGdnc4MObSC6LywlU=</D></RSAKeyValue>
PublicKey
<RSAKeyValue><Modulus>0nMMhiGAklb2URWmQsxABYYdrVqyiXfd9kfEVgBsdb39kAw6ivdvOs4ahYWbutcQRq37qRqlRHHAguDxcTWmxpWsFmd9c5DIwvOyXrmynSgGdEVzu5NrCfZlLI7WwvFSQxF/3smdgXQxXYcYwdItV8dXd3CxBaqWS92OzMLkIr0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>
测试加密、解密
方案1:RSA公钥加密,RSA私钥解密
C#
//方案1:RSA公钥加密
var data = RsaHelper.Encrypt("www.cscode.net|C/S框架网", publickey1);
Console.WriteLine(data);
//方案1:RSA私钥解密
var value = RsaHelper.Decrypt(data, privatekey1);
Console.WriteLine(value);
方案2:RSA私钥加密,RSA私钥解密
C#
//方案2:RSA私钥加密
var data1 = RsaHelper.Encrypt("www.cscode.net|C/S框架网", privatekey1);
//方案2:RSA私钥解密
var value1 = RsaHelper.Decrypt(data, privatekey1);
数字签名、验签
前端使用公钥进行数字签名,后台使用私钥验签。
C#
//数字签名、验签
var signData = RsaHelper.Sign("www.cscode.net|C/S框架网", publickey1);
var isEqual = RsaHelper.VerifySign("www.cscode.net|C/S框架网", signData, privatekey1);
Console.WriteLine(isEqual);
RsaHelper类
RSA算法加密解密(使用XML格式秘钥)
C#
/// <summary>
/// RSA算法加密解密(使用XML格式秘钥)
/// </summary>
public static class RsaHelper
{
/// <summary>
/// 获取RSA 密钥
/// </summary>
/// <param name="privatekey">私钥</param>
/// <param name="publickey">公钥</param>
public static void GetXmlKey(out string privatekey, out string publickey)
{
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
privatekey = provider.ToXmlString(true);
publickey = provider.ToXmlString(false);
}
/// <summary>
/// RSA 使用公钥加密
/// </summary>
/// <param name="plainText">明文</param>
/// <param name="publicKey">公钥</param>
/// <returns></returns>
public static string Encrypt(string plainText, string publicKey)
{
byte[] buffer = Encoding.UTF8.GetBytes(plainText);
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
provider.FromXmlString(publicKey);
byte[] output = provider.Encrypt(buffer, false);
return Convert.ToBase64String(output);
}
/// <summary>
/// RSA 使用私钥解密
/// </summary>
/// <param name="encryptedText">明文</param>
/// <param name="privateKey">私钥</param>
/// <returns></returns>
public static string Decrypt(string encryptedText, string privateKey)
{
byte[] buffer = Convert.FromBase64String(encryptedText);
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
provider.FromXmlString(privateKey);
byte[] output = provider.Decrypt(buffer, false);
return Encoding.UTF8.GetString(output);
}
/// <summary>
/// 使用公钥数字签名
/// </summary>
/// <param name="data">加密的数据</param>
/// <param name="publicKey">公钥</param>
/// <returns></returns>
public static string Sign(string data, string publicKey)
{
return Encrypt(data, publicKey);
}
/// <summary>
/// 使用私钥验签
/// </summary>
/// <param name="original">原文</param>
/// <param name="encryptedText">数字签名的数据</param>
/// <param name="privateKey">私钥</param>
/// <returns></returns>
public static bool VerifySign(string original, string encryptedText, string privateKey)
{
return Decrypt(encryptedText, privateKey).CompareTo(original) == 0;
}
}
热门推荐
广州真正的8家老字号茶楼,一进门全是本地人,外地人根本不知道
追涨停板两大实用技巧:新股涨停越坚决,后期上涨的延续性就越好
脑袋里有电流声滋滋滋是怎么回事
蒜香烤鸡的最佳蔬菜配菜大揭秘!
鸡公煲配菜全攻略:从传统到创新,总有一款适合你
感恩节烤鸡配菜大揭秘!
医疗保险余额怎样查询知晓?查询渠道有哪些优劣?
哪个平台可以快速查询医疗保险个人账户?
醉酒后呕吐难受怎么办?教你醒酒的最快方法
四川康定突发大型泥石流,为什么会这么严重?
阿拉善英雄会:掌握这些沙漠驾驶技巧保你平安
榫卯:古老技艺与现代设计的智慧结合与文化传承探索
李碧华笔下川岛芳子的多面人生
揭秘川岛芳子:公主还是间谍?
川岛芳子:从公主到“东方女魔”的黑化之路
慢病高发的时代,如何进行健康管理?
司美格鲁肽再获成功!显著降低患者的重大不良事件或死亡风险
《蜡笔小新》新作上映,带娃观影增进亲子关系
蜡笔小新剧场版:那些年我们一起追过的童年
蜡笔小新经典搞笑片段大集合,笑到肚子疼!
图书馆勤工俭学:不只是兼职,更是职业发展的起点
莱克斯公开赛:谷爱凌勇夺国际赛第18冠,续写四连冠辉煌
当“爱”成为负担:警惕“自我感动式”的家庭教育
军人考公务员的条件及在部队能否报考2024指南
全国首个中医防癌门诊开诊,中西医结合助力患者康复
中医肿瘤专家袁希福:心理调适助力防癌复发
解毒胶囊联合华蟾素注射液:肝癌复发预防的新选择
中医食疗助力癌症康复:四款养生汤粥推荐
烤鸡控必看!这四个部位最嫩滑
妙佑医疗专家推荐:脆烤鸡腿的健康烹饪秘籍