RSA加密算法

时间:2022-08-29 09:03:56

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. &period;net(c&num;)版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加密算法&lpar;精&rpar;

    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. 10&period;Struts2连接数据库

    链接数据库的两种方式: 1.在Action中连接数据库 2.使用工具类连接数据库 1.在Action中连接数据库 源码文档目录如图所示: 1.建立数据库 数据库建立语句: create databas ...

  2. ADO&period;Net 增、删、改、查(基本项)

    数据访问 对应命名空间:System.Data.SqlClient; SqlConnection:连接对象 SqlCommand:命令对象 SqlDataReader:读取器对象 CommandTex ...

  3. Eclipse中新建WEB项目,JSP页面报错。

    在Eclipse中新建java web项目,在JSP页面的第一行提示这个错误: [The superclass "javax.servlet.http.HttpServlet" w ...

  4. 025-ViewData、ViewBag与TempData概述

    Action向View传递数据很简单,方式也很多,最直接的就是我们向View传递Model,这本身就是MVC的意义所在.如果是显示一些消息,像是错误信息,可以使用ViewData.ViewBag.Te ...

  5. java 之 组合模式(大话设计模式)

    代码是一门艺术,每次看完大话设计模式后都会有新的认识,有时会感叹原来还可以这样玩,相信大家都用过递归,递归的使用一般遍历文件夹等会常用到, 今天讲的设计模式类似于递归,也比较神奇,先看下类图,稍后再帮 ...

  6. bzoj千题计划244:bzoj3730&colon; 震波

    http://www.lydsy.com/JudgeOnline/problem.php?id=3730 点分树内对每个节点动态维护2颗线段树 线段树以距离为下标,城市的价值为权值 对于节点x的两棵线 ...

  7. SpringBoot整合Apache Shiro权限验证框架

    比较常见的权限框架有两种,一种是Spring Security,另一种是Apache Shiro,两种框架各有优劣,个人感觉Shiro更容易使用,更加灵活,也更符合RABC规则,而且是java官方更推 ...

  8. Spark SQL在100TB上的自适应执行实践(转载)

    Spark SQL是Apache Spark最广泛使用的一个组件,它提供了非常友好的接口来分布式处理结构化数据,在很多应用领域都有成功的生产实践,但是在超大规模集群和数据集上,Spark SQL仍然遇 ...

  9. Appium&plus;python&plus;html生成饼图测试报告

    历时三周这个小框架终于正式运行了,git源码地址;https://github.com/jiyanjiao/AutoTEST/tree/master/qingqi_driver_app 报告如图:

  10. 『TensorFlow』从磁盘读取数据

    十图详解TensorFlow数据读取机制 一.输入流水线读取数据流程 1). 创建文件名列表 相关函数:tf.train.match_filenames_once 2). 创建文件名队列 相关函数:t ...