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.密钥分为:公钥,私钥 公钥:可以对外给任何人的加密和解密的密码,是公开的 私钥:通过私钥可以生成公钥,但从 ...
随机推荐
- 使用Dubbox构架分布式服务
第一部分:Dubbo的背景分析及工作原理 1. Dubbo是什么?Dubbo是一个来自阿里巴巴的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 简单的说 ...
- vue学习笔记-one
学习vue基础以来,看各种教程,练习,随手写写,有错误请大家指导, 目前vue已经升级到2.0的版本,学习也最好是2.0的版本开始. 先看vue的几个特点:1,简单,2,轻量,3,模块友好 4, 组件 ...
- 配置RMAN备份环境
关于配置RMAN备份环境你可以给每个目标数据库设置一些固定的配置,这些配置控制着RMAN多个方面的行为.例如,你可配置备份的保存策略.默认的备份目录.默认的备份设备类型等.你可以用show命令来查看配 ...
- lock invoke 死锁事例
代码如下: using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threa ...
- Docker - 从零开始到操作
从零开始 介绍Docker的基本概念和命令,并给出简单使用示例和参考信息. Docker - 基础讲义 http://www.cnblogs.com/anliven/p/6281373.html Do ...
- (坑)django test在多线程下的问题
问题描述: 使用django自带的test做测试,尝试去数据库中取数据,主线程中没有问题,非主线程中取不到数据. 示例代码: class MyTestCase(TestCase): def setUp ...
- mysql中 date datetime time timestamp 的区别
MySQL中关于时间的数据类型:它们分别是 date.datetime.time.timestamp.year date :"yyyy-mm-dd" 日期 1000-01 ...
- 转:修改Tomcat控制台标题
转自:http://blog.csdn.net/chanryma/article/details/46930729 背景:用控制台方式启动Tomcat,控制台的标题默认是"Tomcat&qu ...
- JS执行效率与性能提升方案
如果是追加字符串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr.如果要连接多个字符串,应该少使用+=,如 s+=a;s+=b;s+=c;应该写成s+=a + b + ...
- Hbuilder常用功能汇总
引用 样式表: mui.min.css Js:mui.min.js 常用功能 获取页面 var webView=plus.webview.currentWebview();//获取当前页 var we ...