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加密算法的更多相关文章

  1. .net(c#)版RSA加密算法,拿走不谢

    今天有同学对接一个支付平台,涉及到RSA的签名和验签.由于对方是java的sdk,翻成c#语言时,搞了半天也没搞定.网上搜的东西都是各种copy还不解决问题. 碰巧,我之前对接过连连银通的网银支付和代 ...

  2. RSA加密算法的简单案例

    RSA加密算法是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击. 那关于RSA加密算法有哪些应用呢?以下举一个数据库身份验证的案例. 在使用数据集进行身份认证时,密码存在数据 ...

  3. RSA加密算法的java实现

    package rsa; import java.security.*;import java.security.interfaces.*;import javax.crypto.*; public ...

  4. 用实例讲解RSA加密算法(精)

    RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名.RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,这个算法经 ...

  5. 关于RSA加密算法的长度限制问题

    RSA是常用的非对称加密算法.近来有学生在项目中使用System.Security类库中的RSA加密算法时,出现了“不正确的长度”,这实际上是因为待加密的数据超长所致..net Framework中提 ...

  6. RSA加密算法的加密与解密

    转发原文链接:RSA加密算法加密与解密过程解析 1.加密算法概述 加密算法根据内容是否可以还原分为可逆加密和非可逆加密. 可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密. 所 ...

  7. 【python网络编程】使用rsa加密算法模块模拟登录新浪微博

    一.基础知识 http://blog.csdn.net/pi9nc/article/details/9734437 二.模拟登录 因为上学期参加了一个大数据比赛,需要抓取数据,所以就想着写个爬虫抓取新 ...

  8. 轻松学习RSA加密算法原理

    转自:http://blog.csdn.net/sunmenggmail/article/details/11994013 http://blog.csdn.net/q376420785/articl ...

  9. RSA加密算法原理及RES签名算法简介

    第一部分:RSA算法原理与加密解密 一.RSA加密过程简述 A和B进行加密通信时,B首先要生成一对密钥.一个是公钥,给A,B自己持有私钥.A使用B的公钥加密要加密发送的内容,然后B在通过自己的私钥解密 ...

  10. 浅谈RSA加密算法

    一.什么是非对称加密 1.加密的密钥与加密的密钥不相同,这样的加密算法称之为非对称加密 2.密钥分为:公钥,私钥  公钥:可以对外给任何人的加密和解密的密码,是公开的 私钥:通过私钥可以生成公钥,但从 ...

随机推荐

  1. kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition

    问题描述:kafka单台机器做集群操作是没有问题的,如果分布多台机器并且partitions或者备份的个数大于1都会报kafka.common.KafkaException: Should not s ...

  2. appium+python做移动端自动化测试

      1 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile Web)应用UI自动化测试的相关自动化测试人员.开发人员等提供 ...

  3. python基本数据类型——set

    一.集合的定义 set集合,是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数 ...

  4. 不完全CSS3图解

    温故而知新.用XMind总结了下CSS3,打钩的代表比较常用的.希望对大家整体上理解CSS3有所帮助吧.

  5. HTML标签元素分类(HTML基础知识)

    HTML标签元素分类 一.按照块级元素还是行内元素分类 块级元素(block-level)和行内元素(inline-level,也叫作"内联"元素). a.块级元素(独占一行) 块 ...

  6. Jfinal数据库操作语句中占位符的使用

    占位符的优点: 1.增加SQL代码可读性 2.占位符可以预先编译,提高执行效率 3.防止SQL注入 4.用占位符的目的是绑定变量,这样可以减少数据SQL的硬解析,所以执行效率会提高不少 假设要将id从 ...

  7. spring cloud微服务搭建第一天

    martin fowler大神提出微服务的概念后,各种微服务的技术满天飞,现在用的比较多的是spring cloud和阿里的dubbo,由于dubbo 在16年10月份就停止更新了,这里我们讲解spr ...

  8. W10上面DOSBOX安装

    第一步:下载好MASM.exe.debug.exe.link.exe.将其放在根目录下面.我们以后自己编写的汇编代码也是在此目录下.如图: 第二步:我这里的文件夹名称是Assembly那么这个也就是待 ...

  9. Oracle 12C 新特性之表分区带 异步全局索引异步维护(一次add、truncate、drop、spilt、merge多个分区)

    实验准备:-- 创建实验表CREATE TABLE p_andy(ID number(10), NAME varchar2(40))PARTITION BY RANGE (id)(PARTITION ...

  10. Java学习笔记——设计模式之三.装饰模式

    函数应该做一件事,做好这件事,只做这一件事. --Clean Code 装饰模式,上代码: 先定义零件类: package cn.no3.decorator.template; public abst ...