From 60a8b8eda843b794733bc62bb66908b4f9c73e60 Mon Sep 17 00:00:00 2001 From: falcon <9504402@qq.com> Date: Fri, 1 Mar 2019 17:01:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=A0=E5=AF=86=E8=A7=A3?= =?UTF-8?q?=E5=AF=86=E5=B8=AE=E5=8A=A9=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebSiteCode/Cmdjy/Cmdjy/Bll/DesHelper.cs | 102 +++++++++++++++++++++++ WebSiteCode/Cmdjy/Cmdjy/Cmdjy.csproj | 2 +- 2 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 WebSiteCode/Cmdjy/Cmdjy/Bll/DesHelper.cs diff --git a/WebSiteCode/Cmdjy/Cmdjy/Bll/DesHelper.cs b/WebSiteCode/Cmdjy/Cmdjy/Bll/DesHelper.cs new file mode 100644 index 0000000..acfc1b9 --- /dev/null +++ b/WebSiteCode/Cmdjy/Cmdjy/Bll/DesHelper.cs @@ -0,0 +1,102 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; + +namespace Cmdjy.Bll +{ + /// + /// 加密帮助类 + /// + public class DesHelper + { + /// + /// 补位填充方式 + /// + public PaddingMode Padding { get; set; } + /// + /// 加密算法模式 + /// + public CipherMode Cipher { get; set; } + /// + /// 初始化向量 + /// + public byte[] IV { get; set; } + /// + /// 加密key + /// + public string Key { get; set; } + /// + /// 加密字符串获取Base64密文 + /// + /// 要加密的字符串 + public string Encrypty(string str) { + byte[] bKey = Encoding.UTF8.GetBytes(Key.Substring(0,8)); + byte[] bStr = Encoding.UTF8.GetBytes(str); + var desc = createProvider(); + using(var mStream = new MemoryStream()) { + using(var cStream = new CryptoStream(mStream,desc.CreateEncryptor(bKey,IV),CryptoStreamMode.Write)) { + cStream.Write(bStr,0,bStr.Length); + cStream.FlushFinalBlock(); + return Convert.ToBase64String(mStream.ToArray()); + } + } + } + /// + /// 从Base64密文解密,获取字符串 + /// + /// 密文 + /// + public string DesCrypty(string str) { + var bStr = Convert.FromBase64String(str); + byte[] bKey = Encoding.UTF8.GetBytes(Key.Substring(0,8)); + var desc = createProvider(); + using(var mStream = new MemoryStream()) { + using(var cStream = new CryptoStream(mStream,desc.CreateDecryptor(bKey,IV),CryptoStreamMode.Write)) { + cStream.Write(bStr,0,bStr.Length); + cStream.FlushFinalBlock(); + return Encoding.UTF8.GetString(mStream.ToArray()); + } + } + } + + private DESCryptoServiceProvider createProvider() { + var desc = new DESCryptoServiceProvider(); + desc.Padding = this.Padding; + desc.Mode = this.Cipher; + return desc; + } + + private static DesHelper _deshelper { get; set; } + + private DesHelper() { } + + /// + /// 重用模式获取默认加密帮助器 + /// + public static DesHelper GetHelper() { + if(_deshelper == null) { + var key = ""; + byte[] IV = { 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08 }; + _deshelper = GetHelper(PaddingMode.PKCS7,CipherMode.CBC,IV,key); + + } + return _deshelper; + } + /// + /// 生成新的加密帮助器 + /// + /// 补位方式 + /// 加密算法模式 + /// 初始化向量 + /// 加密关键字 + public static DesHelper GetHelper(PaddingMode padding,CipherMode cipher,byte[] IV,string key) { + if(key.Length <= 8) { + throw new Exception("加密用的key长度为8位"); + } + return new DesHelper { + Cipher = cipher,IV = IV,Key = key,Padding = padding, + }; + } + } +} \ No newline at end of file diff --git a/WebSiteCode/Cmdjy/Cmdjy/Cmdjy.csproj b/WebSiteCode/Cmdjy/Cmdjy/Cmdjy.csproj index 499ffe4..05255ad 100644 --- a/WebSiteCode/Cmdjy/Cmdjy/Cmdjy.csproj +++ b/WebSiteCode/Cmdjy/Cmdjy/Cmdjy.csproj @@ -153,6 +153,7 @@ + @@ -218,7 +219,6 @@ -