0. 前言这一篇我们将介绍一下.net core 的加密和解密 。在Web应用程序中,用户的密码会使用MD5值作为密码数据存储起来 。而在其他的情况下,也会使用加密和解密的功能 。
常见的加密算法分为对称加密和非对称加密 。所谓的对称加密是指加密密钥和解密密钥是同一个,非对称加密是值加密密钥和解密密钥不同 。而我们常应用在保存用户登录密码这个过程中的MD5本质上并不是加密算法,而是一种信息摘要算法 。不过MD5尽量保证了每个字符串最后计算出来的值都不一样,所以在密码保存中常用MD5作为保密值 。
文章插图
1. 常见对称加密算法对称加密算法,简单的说就是加密和解密使用相同的密钥进行运算 。对于大多数加密算法,解密和加密是一个互逆的运算 。对称加密算法的安全性取决于密钥的长度,密钥越长越安全 。当然,不建议使用过长的密钥 。
那么,我们来看看常见的对称加密算法有哪些吧,以及C#该如何实现 。
1.1 DES 和 DESede 算法DES算法和DESede算法(又称三重DES算法) 统称DES系列算法 。DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法 。而DESede就是针对同一块数据做三次DES加密 。这里就不对原理做过多的介绍了,来看看.net core里如何实现DES加/解密吧 。
在Utils项目里,创建目录Security:
在Security目录下,创建DESHelper类:
namespace Utils.Security{ public class DesHelper { }}
加密解密实现:using System;using System.IO;using System.Security.Cryptography;using System.Text;?namespace Utils.Security{ public static class DesHelper { static DesHelper() { DesHandler = DES.Create("DES"); DesHandler.Key = Convert.FromBase64String("L1yzjGB2sI4="); DesHandler.IV = Convert.FromBase64String("uEcGI4JSAuY="); }? private static DES DesHandler { get; }? /// <summary> /// 加密字符 /// </summary> /// <param name="source"></param> /// <returns></returns> public static string Encrypt(string source) { try { using (var memStream = new MemoryStream()) using (var cryptStream = new CryptoStream(memStream, DesHandler.CreateEncryptor(DesHandler.Key, DesHandler.IV), CryptoStreamMode.Write)) { var bytes = Encoding.UTF8.GetBytes(source); cryptStream.Write(bytes, 0, bytes.Length); cryptStream.FlushFinalBlock(); return Convert.ToBase64String(memStream.ToArray()); } } catch (Exception e) { Console.WriteLine(e); return null; } }? /// <summary> /// 解密 /// </summary> /// <param name="source"></param> /// <returns></returns> public static string Decrypt(string source) { try { using (var mStream = new MemoryStream(Convert.FromBase64String(source))) using (var cryptoStream = new CryptoStream(mStream, DesHandler.CreateDecryptor(DesHandler.Key, DesHandler.IV), CryptoStreamMode.Read)) using (var reader = new StreamReader(cryptoStream)) { return reader.ReadToEnd(); } } catch (Exception e) { Console.WriteLine(e); return null; } } }}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等
- 常见的错误喝茶方法,错误的喝茶习惯
- 茶叶保存常见的小窍门,鲜美的漳平水仙冻茶
- 基础通俗讲解集成学习算法
- 流行的机器学习算法总结,帮助你开启机器学习算法学习之旅
- 人工智能28个常见专业术语,别再说你看不懂AI了,分享教程资料
- 陈年铁观音储存方法,储存白毛猴茶的常见方法
- 新手开淘宝店应该注意些什么 新手开店常见的误区有哪些
- 算法专家教你一致性算法:Paxos+Zab+Raft+NWR+Gossip+一致性Hash
- 什么是搜索算法?初学者的SEO:使流量增长了令人难以置信的385%