RSA加密算法
class Program
{
static void Main(string[] args)
{
RSAPublicKey P = new RSAPublicKey();
P.Exponent = "AAAAAAAA";
P.Modulus = "BBBBBBBBBB";
string S = XmlUtil.Serializer(typeof(RSAPublicKey), P);
//string activeDir = Server.MapPath("~/Custom/");
// RSAPublicKey PublicKey = XmlUtil.Deserialize(typeof(RSAPublicKey), @"D:\\xml\\Publickey.xml") as RSAPublicKey;
string a = "123";
string a2 = RSAEncrypt(a);
string b = RSADecrypt(a2);
}
private static RSAPublicKey getRSAPublicKey()
{
RSAPublicKey PublicKey = XmlUtil.Deserialize(typeof(RSAPublicKey), @"D:\xml\Publickey.xml") as RSAPublicKey;
return PublicKey;
}
private static RSAPrivateKey getRSARSAPrivateKey()
{
RSAPrivateKey PrivateKey = XmlUtil.Deserialize(typeof(RSAPrivateKey), @"D:\xml\PrivateKey.xml") as RSAPrivateKey;
return PrivateKey;
}
/// <summary>
/// RSA加密 yms2016
/// </summary>
/// <param name="plainText">明文</param>
/// <returns>密文</returns>
public static string RSAEncrypt(string plainText)
{
RSAPublicKey key = getRSAPublicKey();
try
{
RSAParameters rsaParam = new RSAParameters();
//rsaParam.Exponent = Convert.FromBase64String(GlobalParameter.RSA_PARAM_EXPONENT);
//rsaParam.Modulus = Convert.FromBase64String(GlobalParameter.RSA_PARAM_MODULUS);
//rsaParam.Exponent = Convert.FromBase64String("AQAB");
//rsaParam.Modulus = Convert.FromBase64String("6YPSotU5ioFyM0fyJIz2uP5NUodIkTC3mOVemRd8OV5tCtdf+LmpnI4NIR5phxoIdN7GzoLiryGWs/E4jUvjCkVCY+XO4R+xEkrUSBCytUjiSHcMGvjX3ZosGoT7H/IuMGclRz9lOptbCSWZYQmfHea4yrJ1Azybu9lj1BT6ZnU=");
rsaParam.Exponent = Convert.FromBase64String(key.Exponent.Trim());
rsaParam.Modulus = Convert.FromBase64String(key.Modulus.Trim());
return RSAEncrypt(plainText, rsaParam);
}
catch (CryptographicException)
{
return null;
}
}
/// <summary>
/// RSA解密
/// </summary>
/// <param name="cypherText">密文</param>
/// <returns>明文</returns>
public static string RSADecrypt(string cypherText)
{
RSAPrivateKey key = getRSARSAPrivateKey();
try
{
RSAParameters rsaParam = new RSAParameters();
//rsaParam.Exponent = Convert.FromBase64String(GlobalParameter.RSA_PARAM_EXPONENT);
//rsaParam.Modulus = Convert.FromBase64String(GlobalParameter.RSA_PARAM_MODULUS);
//rsaParam.InverseQ = Convert.FromBase64String(GlobalParameter.RSA_PARAM_INVERSEQ);
//rsaParam.D = Convert.FromBase64String(GlobalParameter.RSA_PARAM_D);
//rsaParam.P = Convert.FromBase64String(GlobalParameter.RSA_PARAM_P);
//rsaParam.Q = Convert.FromBase64String(GlobalParameter.RSA_PARAM_Q);
//rsaParam.DP = Convert.FromBase64String(GlobalParameter.RSA_PARAM_DP);
//rsaParam.DQ = Convert.FromBase64String(GlobalParameter.RSA_PARAM_DQ);
//rsaParam.Exponent = Convert.FromBase64String("AQAB");
//rsaParam.Modulus = Convert.FromBase64String("6YPSotU5ioFyM0fyJIz2uP5NUodIkTC3mOVemRd8OV5tCtdf+LmpnI4NIR5phxoIdN7GzoLiryGWs/E4jUvjCkVCY+XO4R+xEkrUSBCytUjiSHcMGvjX3ZosGoT7H/IuMGclRz9lOptbCSWZYQmfHea4yrJ1Azybu9lj1BT6ZnU=");
//rsaParam.InverseQ = Convert.FromBase64String("USMiemxLJHeYXFk0N2gfVz4x7q/Wc1L4y9/KRRzAXgjc6cq7223SL1td7lCl/sX4puRevt466U6tZRG/u6lozA==");
//rsaParam.D = Convert.FromBase64String("sYVTdhKfIdpylOWXAY5gahZ5dcn+stHUYVnN5phiCcLtJpbBEPckKC4dcRYLp3d1AlPx00DRT847ISS6l0AfolUclUanw1mTUfe29D7TrG4/ZGBqNbit1PcqT/gT+dl5JWC1cZU/+Z3fGNpjMwwWhsGlimow5ViRpalt4FiPMoE=");
//rsaParam.P = Convert.FromBase64String("/wh2zBrCZGux+aLRCakuH/oGB4PsgcYrILWz7esWLBpqZg5P3YHuOV55aCbPpu8EwFfvs0XgY8ra02odUGlssQ==");
//rsaParam.Q = Convert.FromBase64String("6mZ5IhA6osdI7r/D2JkGE3YAUS6kE3iEJxwS8mv5Dnse5b/xVg/ShhhGEeEywIktLZdKSymW0ilxAMciPPV3BQ==");
//rsaParam.DP = Convert.FromBase64String("17jGG/FKmvzJp3pETWKwZFXtga/ifwcr9dgcoVPoBlg1xau3fItqAVbbZPDnVrH5F+WKGN8zZdXx8UBiGWGDkQ==");
//rsaParam.DQ = Convert.FromBase64String("uexEIte6msj1uaJT5uch4afUgpA7RtJuCFOFV9J6/5h7HoOMGtZ8By8TzTTSO9PTCPmazVmUruh+IL7TEoUlPQ==");
rsaParam.Exponent = Convert.FromBase64String(key.Exponent.Trim());
rsaParam.Modulus = Convert.FromBase64String(key.Modulus.Trim());
rsaParam.InverseQ = Convert.FromBase64String(key.InverseQ.Trim());
rsaParam.D = Convert.FromBase64String(key.D.Trim());
rsaParam.P = Convert.FromBase64String(key.P.Trim());
rsaParam.Q = Convert.FromBase64String(key.Q.Trim());
rsaParam.DP = Convert.FromBase64String(key.DP.Trim());
rsaParam.DQ = Convert.FromBase64String(key.DQ.Trim());
return RSADecrypt(cypherText, rsaParam);
}
catch (CryptographicException)
{
return null;
}
}
/// <summary>
/// RSA加密
/// </summary>
/// <param name="plainText">明文</param>
/// <param name="rsaParam">公钥私钥参数</param>
/// <returns>密文</returns>
public static string RSAEncrypt(string plainText, RSAParameters rsaParam)
{
try
{
UTF8Encoding encoder = new UTF8Encoding();
byte[] dataToEncrypt = encoder.GetBytes(plainText);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaParam);
byte[] bytesCypherText = rsa.Encrypt(dataToEncrypt, false);
return Convert.ToBase64String(bytesCypherText);
}
catch (CryptographicException)
{
return null;
}
}
/// <summary>
/// RSA解密
/// </summary>
/// <param name="cypherText">密文</param>
/// <param name="rsaParam">公钥私钥参数</param>
/// <returns>明文</returns>
public static string RSADecrypt(string cypherText, RSAParameters rsaParam)
{
try
{
byte[] dataToDecrypt = Convert.FromBase64String(cypherText);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaParam);
byte[] bytesPlainText = rsa.Decrypt(dataToDecrypt, false);
UTF8Encoding encoder = new UTF8Encoding();
return encoder.GetString(bytesPlainText);
}
catch (CryptographicException)
{
return null;
}
}
}
如有兴趣,加qq群围观:337335820
RSA加密算法的更多相关文章
- .net(c#)版RSA加密算法,拿走不谢
今天有同学对接一个支付平台,涉及到RSA的签名和验签.由于对方是java的sdk,翻成c#语言时,搞了半天也没搞定.网上搜的东西都是各种copy还不解决问题. 碰巧,我之前对接过连连银通的网银支付和代 ...
- RSA加密算法的简单案例
RSA加密算法是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击. 那关于RSA加密算法有哪些应用呢?以下举一个数据库身份验证的案例. 在使用数据集进行身份认证时,密码存在数据 ...
- RSA加密算法的java实现
package rsa; import java.security.*;import java.security.interfaces.*;import javax.crypto.*; public ...
- 用实例讲解RSA加密算法(精)
RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名.RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,这个算法经 ...
- 关于RSA加密算法的长度限制问题
RSA是常用的非对称加密算法.近来有学生在项目中使用System.Security类库中的RSA加密算法时,出现了“不正确的长度”,这实际上是因为待加密的数据超长所致..net Framework中提 ...
- RSA加密算法的加密与解密
转发原文链接:RSA加密算法加密与解密过程解析 1.加密算法概述 加密算法根据内容是否可以还原分为可逆加密和非可逆加密. 可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密. 所 ...
- 【python网络编程】使用rsa加密算法模块模拟登录新浪微博
一.基础知识 http://blog.csdn.net/pi9nc/article/details/9734437 二.模拟登录 因为上学期参加了一个大数据比赛,需要抓取数据,所以就想着写个爬虫抓取新 ...
- 轻松学习RSA加密算法原理
转自:http://blog.csdn.net/sunmenggmail/article/details/11994013 http://blog.csdn.net/q376420785/articl ...
- RSA加密算法原理及RES签名算法简介
第一部分:RSA算法原理与加密解密 一.RSA加密过程简述 A和B进行加密通信时,B首先要生成一对密钥.一个是公钥,给A,B自己持有私钥.A使用B的公钥加密要加密发送的内容,然后B在通过自己的私钥解密 ...
- 浅谈RSA加密算法
一.什么是非对称加密 1.加密的密钥与加密的密钥不相同,这样的加密算法称之为非对称加密 2.密钥分为:公钥,私钥 公钥:可以对外给任何人的加密和解密的密码,是公开的 私钥:通过私钥可以生成公钥,但从 ...
随机推荐
- Node.js系列:Buffer类的使用
客户端JavaScript中没有对二进制数据提供很好的支持.但是在处理TCP流或文件流时,必须要处理二进制数据.Node.js定义了一个Buffer类,用来创建一个专门存放二进制数据的缓存区. Buf ...
- seajs加载jquery提示$ is not a function
jquery1.7以上的都支持模块化加载,只是jquery默认的是支持amd,不支持cmd.所以要用seajs加载jquery,需要稍微改下jquery 把 if (typeof define === ...
- 一个全局变量引起的DLL崩溃
参考我发的帖子: http://bbs.csdn.net/topics/390737064?page=1#post-397000946 现象是exe程序在加载dll的时候崩溃了,莫名其妙的崩溃了.换其 ...
- 1.2 N层架构
N层架构 介绍 ABP架构 其他(通用) 领域层 应用层 基础设施层 网络和展现层 其他 总结 介绍 应用程序代码库的分层架构是被广泛认可的可以减少程序复杂度.提高代码复用率的技术.为了实现分层架构, ...
- 图片裁剪(cropper)后上传问题
最近工作需要处理头像裁剪以及上传,研究了几天,写点心得,提醒自己记住踩过的坑,能帮助别人当然更好. 功能基本就是这样: 这里需要注意的是:拿到需求后,不要急于直接上手,花费半个小时,甚至更长时间缕清整 ...
- focus、blur事件的事件委托处理(兼容各个流浏览器)
今天工作中遇到个问题,问题是这样的,一个form表单中有比较多的input标签,因为form中的input标签中的值都需要前端做客户端校验,由于本人比较懒而且特不喜欢用循环给 每个input元素添加b ...
- 04(1) 基于上下文相关的GMM-HMM声学模型1
1.上下文对音素发音的语谱轨迹的影响 受到上下文的影响,同一个音素的发音语谱轨迹不同 为提高识别准确率,对音素建模时应将这种上下文影响考虑在内 2.基于上下文相关的音素建模 注意,非单音素建模中,每个 ...
- bzoj100题
蒟蒻选手bzoj终于100题辣!!!好鸡冻啊!!! 200题大关也来了,不知道还要多久..
- cas 代理认证配置
注:本文转自http://www.ichatter.net/2013/03/21/385/ CAS(Central Authentication Service)框架是一个开源的单点登陆框架.最近公司 ...
- 详细解剖大型H5单页面应用的核心技术点
项目 Xut.js 阐述下开发中一个比较核心的优化技术点,这是一套平台代码,并非某一个插件功能或者框架可以直接拿来使用,核心代码大概是6万行左右(不包含任何插件) .这也并非一个开源项目,不能商业使用 ...