Asp.Net 常用工具类之加密——非对称加密RSA算法
踏入程序员这个行业也有几年了,几年中有收获(技术加强),有付出(时间和亚健康状态)。当然喏,并不后悔,代码路还长!!!
On The Way,永不止步!!!
开发过程中也积累了一些自己的经验、代码块和帮助类,有了这些,确实方便了之后的开发流程,同时也缩小了开发周期,详情看图(一小部分),这些都是最近结合开发常见的方法一行行写出来,并且也用到了相关项目,现在看起来还是有点点的小兴奋!
当然喏,我还是个新人,需要园子里的老人多多指点,尤其是在代码质量和技术方面,您们的指点感激不尽,也是我前进的方向!
自用帮助类
准备分周期进行讲解和分析,望大家共勉!!!
今天咱们就从加解密开始讲起吧,哈哈。
在开发过程中,各种加密方式层出不穷,有对称加密,非对称加密;当然喏,密码也分为可逆,不可逆。
在c#中,非对称加密以RSA算法为代表,利用公钥,私钥方式进行加解密。
加密过程中需要针对密钥长度进行设置,保证密钥的长度可行性。密钥长度:512,1024,2048,4096,8192。
RSA加密算法流程如下:
1、首先 【系统】 生成一对密钥,即私钥和公钥
2、然后,【系统】 将公钥发送给 【用户】
3、【用户】用收到的公钥对数据加密,再发送给【系统】
4、【系统】 收到数据后,使用自己的私钥解密,返回密码
由于在非对称算法中,公钥加密的数据必须用对应的私钥才能解密,而私钥又只有接收方自己知道,这样就保证了数据传输的安全性。
理论性比较强,下面通过一个DEMO进行代码的演示:
public static class RSA
{
/// <summary>
/// 生成密钥
/// <param name="PrivateKey">私钥</param>
/// <param name="PublicKey">公钥</param>
/// <param name="KeySize">密钥长度:512,1024,2048,4096,8192</param>
/// </summary>
public static void Generator(out string PrivateKey, out string PublicKey, int KeySize = )
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(KeySize);
PrivateKey = rsa.ToXmlString(true); //将RSA算法的私钥导出到字符串PrivateKey中 参数为true表示导出私钥 true 表示同时包含 RSA 公钥和私钥;false 表示仅包含公钥。
PublicKey = rsa.ToXmlString(false); //将RSA算法的公钥导出到字符串PublicKey中 参数为false表示不导出私钥 true 表示同时包含 RSA 公钥和私钥;false 表示仅包含公钥。
}
/// <summary>
/// RSA加密 将公钥导入到RSA对象中,准备加密
/// </summary>
/// <param name="PublicKey">公钥</param>
/// <param name="encryptstring">待加密的字符串</param>
public static string RSAEncrypt(string PublicKey, string encryptstring)
{
byte[] PlainTextBArray;
byte[] CypherTextBArray;
string Result;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PublicKey);
PlainTextBArray = (new UnicodeEncoding()).GetBytes(encryptstring);
CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);
Result = Convert.ToBase64String(CypherTextBArray);
return Result;
}
/// <summary>
/// RSA解密 将私钥导入RSA中,准备解密
/// </summary>
/// <param name="PrivateKey">私钥</param>
/// <param name="decryptstring">待解密的字符串</param>
public static string RSADecrypt(string PrivateKey, string decryptstring)
{
byte[] PlainTextBArray;
byte[] DypherTextBArray;
string Result;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PrivateKey);
PlainTextBArray = Convert.FromBase64String(decryptstring);
DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);
Result = (new UnicodeEncoding()).GetString(DypherTextBArray);
return Result;
}
}
调用方式:
static void Main(string[] args)
{
string PrivateKey = "";
string PublicKey = "";
RSA.Generator(out PrivateKey, out PublicKey, );
var aaa = RSA.RSAEncrypt(PublicKey, "");
var bbb = RSA.RSADecrypt(PrivateKey, aaa);
}
OK,各位看官,这一期的文章非对称加密写到这里喏,感谢大家的支持,您的支持是我的动力!
下一期给大家带来的是常用的对称加密几种方式,敬请期待!!!
个人头条号: http://www.toutiao.com/c/user/3213034222/#mid=4129397771
Asp.Net 常用工具类之加密——非对称加密RSA算法的更多相关文章
- Asp.Net 常用工具类之加密——对称加密DES算法(2)
又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...
- Asp.Net 常用工具类之Office—Excel导入(5)
之前在做一个项目的时候,客户方面只提供了一份简单的Excel文件,且要跟现有数据进行对接. 当时想到的是如果数据量不大,可以Excel一条一条加进去,无奈数据有几十兆!!! 换了一种思维,进行了导入: ...
- Asp.Net 常用工具类---Config操作(7)
近期工作比较忙,忙到忘记写博客(自己的借口,主要加班下班后不想动). 月初的时候,打算每两天写一篇博文,分享自己的一些心得和开发体验,无奈现在只写到第六篇,然而时间已经是20号,岁月不饶人! 总想写点 ...
- Asp.Net 常用工具类之Office—Excel导出(4)
开发过程中各类报表导入导出防不胜防,网上也是各种解决方法层出不穷,比如Excel,CSV,Word,PDF,HTML等等... 网上各种导出插件也是层出不穷,NPOI,微软Microsoft.Offi ...
- Asp.Net 常用工具类之Office-文档操作(6)
文档一直是老大难问题,君不知,代码用时方恨少!有一套成熟的文件帮助类能很大程度上减少寻找各种资料的时间. 记得以前做一个业务,需要导出协议,一份可编辑,一份不可编辑.那么Word和PDF是最好的选择, ...
- [C#] 常用工具类——加密解密类
using System; using System.Configuration; using System.Collections.Generic; using System.Text; using ...
- Apache Commons 常用工具类整理
其实一直都在使用常用工具类,只是从没去整理过,今天空了把一些常用的整理一下吧 怎么使用的一看就明白,另外还有注释,最后的使用pom引入的jar包 public class ApacheCommonsT ...
- [C#] 常用工具类——文件操作类
/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在&l ...
- PHP常用工具类
<?php namespace isslib\Util; use think\Config; /** * 常用工具类 * User: xaxiong * Date: 2016/12/19 * T ...
随机推荐
- OSG和osgearth显示中文(转载)
osgEarth支持中文过程详解 OSG和osgearth显示中文 一.知识储备 要想很好的理解和解决这个问题,首先要了解什么是多字节和宽字节.说实话我之前也知道这两个字节到底有什么区别,只是简单 ...
- CSS图形形状大全
The Shapes of CSS All of the below use only a single HTML element. Any kind of CSS goes, as long as ...
- JS 工具 构建工具
1.gruntjs http://www.gruntjs.net/ 2.bootstrap http://www.bootcss.com/ 3.
- js原生之函数
1.函数作为参数传给其他函数: data.sort(function(a,b){return a-b}) //关于数组的sort函数,其回调函数返回负值,a在b之前 //正值,b在a ...
- 专注手机端前端界面开发的ui组件和js组合
frozenui一款腾讯开发的简化版Bootstrap,只用于手机端 http://frozenui.github.io/ https://github.com/frozenui/frozenui z ...
- RAC时间同步的两种方法
集群时间同步服务在集群中的两个 Oracle RAC 节点上执行以下集群时间同步服务配置.Oracle Clusterware 11g 第 2 版及更高版本要求在部署了 Oracle RAC 的集群的 ...
- 文字在div中水平和垂直居中的的css样式
文字在div中水平和垂直居中的的css样式 text-align:center; /*水平居中*/ line-height: 20px; /*行距设为与div高度一致*/ 示例如下: HTML元素 & ...
- HMX-Server C++ 分步式服务器大版本更新了(有源码)
原文地址:http://www.cnblogs.com/hellohuang/p/6294763.html # HMX-ServerHMX-Server分步式服务器框架,主要分为网关.登录.世界.场景 ...
- ER图,以及转化成关系模式
1.找出条件中的实体(矩形),属性(椭圆),关系(菱形)关系分为1:1,1:N,M:N,列出ER图 2. -1:1联系的转换方法 -两个实体分别转化为一个关系模式,属性即是本来的属性 -关系可以与任意 ...
- 实现一个类 Vue 的 MVVM 框架
Vue 一个 MVVM 框架.一个响应式的组件系统,通过把页面抽象成一个个组件来增加复用性.降低复杂性 主要特色就是数据操纵视图变化,一旦数据变化自动更新所有关联组件~ 所以它的一大特性就是一个数据响 ...