踏入程序员这个行业也有几年了,几年中有收获(技术增强),有付出(时间和亚健康状态)。固然喏,并不后悔,代码路还长!!!程序员
On The Way,永不止步!!!算法
开发过程当中也积累了一些本身的经验、代码块和帮助类,有了这些,确实方便了以后的开发流程,同时也缩小了开发周期,详情看图(一小部分),这些都是最近结合开发常见的方法一行行写出来,而且也用到了相关项目,如今看起来仍是有点点的小兴奋!c#
固然喏,我仍是个新人,须要园子里的老人多多指点,尤为是在代码质量和技术方面,您们的指点感激涕零,也是我前进的方向! 安全
自用帮助类ide
准备分周期进行讲解和分析,望你们共勉!!!工具
今天我们就从加解密开始讲起吧,哈哈。加密
在开发过程当中,各类加密方式层出不穷,有对称加密,非对称加密;固然喏,密码也分为可逆,不可逆。spa
在c#中,非对称加密以RSA算法为表明,利用公钥,私钥方式进行加解密。code
加密过程当中须要针对密钥长度进行设置,保证密钥的长度可行性。密钥长度:512,1024,2048,4096,8192。对象
RSA加密算法流程以下:
一、首先 【系统】 生成一对密钥,即私钥和公钥
二、而后,【系统】 将公钥发送给 【用户】
三、【用户】用收到的公钥对数据加密,再发送给【系统】
四、【系统】 收到数据后,使用本身的私钥解密,返回密码
因为在非对称算法中,公钥加密的数据必须用对应的私钥才能解密,而私钥又只有接收方本身知道,这样就保证了数据传输的安全性。
理论性比较强,下面经过一个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 = 2048) { 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, 1024); var aaa = RSA.RSAEncrypt(PublicKey, "123456789"); var bbb = RSA.RSADecrypt(PrivateKey, aaa); }
OK,各位看官,这一期的文章非对称加密写到这里喏,感谢你们的支持,您的支持是个人动力!
下一期给你们带来的是经常使用的对称加密几种方式,敬请期待!!!
我的头条号: http://www.toutiao.com/c/user/3213034222/#mid=4129397771