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 @@
-