踏入程序员这个行业也有几年了,几年中有收获(技术加强),有付出(时间和亚健康状态)。当然喏,并不后悔,代码路还长!!!

    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

最新文章

  1. loadrunner中web_reg_find使用使用方法
  2. Java学习——开端
  3. ssh 客户端远程vi文本文件中文乱码(亲测)
  4. 必须知道的.NET FrameWork
  5. 下破解安装Python开发工具WingIDE4.1
  6. HDU 4433 locker
  7. Java之绘制方法
  8. 玩转iOS 9的UIDynamics(转)
  9. Linux误删C基本运行库libc.so.6急救方法
  10. 如何解决卸载McAfee时出现“处于托管模式时无法删除”问题(转)
  11. 注册表中LEGACY残留项的清理技巧
  12. HTML5学习笔记 二:article和section
  13. 集美大学1414-团队作业2:需求分析&amp;原型设计分数发布
  14. Markdown使用笔记
  15. Maven 安装源码和文档到本地仓库
  16. BigDecimal空指针异常——个人应用
  17. 旋转链表(所有元素往右移) rotate list
  18. [MIT Intro. to algo]Lecture 1: 课程介绍,算法优势,插入算法和归并算法分析,渐近符号
  19. python3.6 pyinstaller 打包exe
  20. python的一些内置函数

热门文章

  1. 5.IP选路,动态选路
  2. 中英文混合字符串截取java
  3. Swift 动态创建提示框
  4. php常用图片处理类
  5. 【翻译】使用Visual Studio在Azure上部署Asp.Net Core Web应用
  6. Java学习之旅基础知识篇:数组及引用类型内存分配
  7. FLV格式详解
  8. 路由器安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错误。向目标系统中安装busybox-initramfs软件包时出现一个错误。请检查/var/log/syslog或查看第四虚拟控制台以获得详细
  9. Java豆瓣电影爬虫——减少与数据库交互实现批量插入
  10. [python]Python2编码问题