1 class DesHelper
2 {
3 #region DES 加密
4
5 /// <summary>
6 /// 加密(Hex)
7 /// Add by 成长的小猪(Jason.Song) on 2017/07/26
8 /// </summary>
9 /// <param name="encryptString">待加密的字符串</param>
10 /// <param name="encryptKey">加密密钥(8位任意字符)</param>
11 /// <param name="encoding">字符编码</param>
12 /// <param name="cipher">运算模式</param>
13 /// <param name="padding">填充模式</param>
14 /// <returns></returns>
15 public static string EncryptToHexString(string encryptString, string encryptKey, Encoding encoding,
16 CipherMode cipher = CipherMode.ECB, PaddingMode padding = PaddingMode.Zeros)
17 {
18 //为了安全级别更高,这个地方建议将密钥进行MD5后取8位,这里我就不加此方法啦
19 //var keyBytes = encoding.GetBytes(Md5Helper.GetMd5HashString(encryptKey, encoding).Substring(0, 8));
20 var keyBytes = encoding.GetBytes(encryptKey);
21 var inputBytes = encoding.GetBytes(encryptString);
22 var outputBytes = EncryptToDesBytes(inputBytes, keyBytes, cipher, padding);
23 var sBuilder = new StringBuilder();
24 foreach (var b in outputBytes)
25 {
26 sBuilder.Append(b.ToString("X2"));
27 }
28 return sBuilder.ToString();
29 }
30
31 /// <summary>
32 /// 加密(Base64)
33 /// Add by 成长的小猪(Jason.Song) on 2017/07/26
34 /// </summary>
35 /// <param name="encryptString">待加密的字符串</param>
36 /// <param name="encryptKey">加密密钥(8位任意字符)</param>
37 /// <param name="encoding">字符编码</param>
38 /// <param name="cipher">运算模式</param>
39 /// <param name="padding">填充模式</param>
40 /// <returns></returns>
41 public static string EncryptToBase64String(string encryptString, string encryptKey, Encoding encoding,
42 CipherMode cipher = CipherMode.ECB, PaddingMode padding = PaddingMode.Zeros)
43 {
44 //为了安全级别更高,这个地方建议将密钥进行MD5后取8位,这里我就不加此方法啦
45 //var keyBytes = encoding.GetBytes(Md5Helper.GetMd5HashString(encryptKey, encoding).Substring(0, 8));
46 var keyBytes = encoding.GetBytes(encryptKey);
47 var inputBytes = encoding.GetBytes(encryptString);
48 var outputBytes = EncryptToDesBytes(inputBytes, keyBytes, cipher, padding);
49 return Convert.ToBase64String(outputBytes);
50 }
51
52 /// <summary>
53 /// 加密
54 /// Add by 成长的小猪(Jason.Song) on 2017/07/26
55 /// </summary>
56 /// <param name="encryptBytes">待加密的字节数组</param>
57 /// <param name="keyBytes">加密密钥字节数组</param>
58 /// <param name="cipher">运算模式</param>
59 /// <param name="padding">填充模式</param>
60 /// <returns></returns>
61 public static byte[] EncryptToDesBytes(byte[] encryptBytes, byte[] keyBytes,
62 CipherMode cipher = CipherMode.ECB, PaddingMode padding = PaddingMode.Zeros)
63 {
64 var des = new DESCryptoServiceProvider
65 {
66 Key = keyBytes,
67 IV = keyBytes,
68 Mode = cipher,
69 Padding = padding
70 };
71 var outputBytes = des.CreateEncryptor().TransformFinalBlock(encryptBytes, 0, encryptBytes.Length);
72 return outputBytes;
73 }
74
75 #endregion
76
77 #region DES 解密
78
79 /// <summary>
80 /// 解密(Hex)
81 /// Add by 成长的小猪(Jason.Song) on 2017/07/26
82 /// </summary>
83 /// <param name="decryptString">待解密的字符串</param>
84 /// <param name="decryptKey">解密密钥(8位任意字符)</param>
85 /// <param name="encoding">字符编码</param>
86 /// <param name="cipher">运算模式</param>
87 /// <param name="padding">填充模式</param>
88 /// <returns></returns>
89 public static string DecryptByHexString(string decryptString, string decryptKey, Encoding encoding,
90 CipherMode cipher = CipherMode.ECB, PaddingMode padding = PaddingMode.PKCS7)
91 {
92 //为了安全级别更高,这个地方建议将密钥进行MD5后取8位,这里我就不加此方法啦
93 //var keyBytes = encoding.GetBytes(Md5Helper.GetMd5HashString(encryptKey, encoding).Substring(0, 8));
94 var keyBytes = encoding.GetBytes(decryptKey);
95 var inputBytes = new byte[decryptString.Length / 2];
96 for (var i = 0; i < inputBytes.Length; i++)
97 {
98 inputBytes[i] = Convert.ToByte(decryptString.Substring(i * 2, 2), 16);
99 }
100 var outputBytes = DecryptByDesBytes(inputBytes, keyBytes, cipher, padding);
101 return encoding.GetString(outputBytes).TrimEnd('\0');
102 }
103
104 /// <summary>
105 /// 解密(Base64)
106 /// Add by 成长的小猪(Jason.Song) on 2017/07/26
107 /// </summary>
108 /// <param name="decryptString">待解密的字符串</param>
109 /// <param name="decryptKey">解密密钥(8位任意字符)</param>
110 /// <param name="encoding">字符编码</param>
111 /// <param name="cipher">运算模式</param>
112 /// <param name="padding">填充模式</param>
113 /// <returns></returns>
114 public static string DecryptByBase64String(string decryptString, string decryptKey, Encoding encoding,
115 CipherMode cipher = CipherMode.ECB, PaddingMode padding = PaddingMode.Zeros)
116 {
117 //为了安全级别更高,这个地方建议将密钥进行MD5后取8位,这里我就不加此方法啦
118 //var keyBytes = encoding.GetBytes(Md5Helper.GetMd5HashString(encryptKey, encoding).Substring(0, 8));
119 var keyBytes = encoding.GetBytes(decryptKey);
120 var inputBytes = Convert.FromBase64String(decryptString);
121 var outputBytes = DecryptByDesBytes(inputBytes, keyBytes, cipher, padding);
122 return encoding.GetString(outputBytes).TrimEnd('\0');
123 }
124
125 /// <summary>
126 /// 解密
127 /// Add by 成长的小猪(Jason.Song) on 2017/07/26
128 /// </summary>
129 /// <param name="decryptBytes">待解密的字节数组</param>
130 /// <param name="keyBytes">解密密钥字节数组</param>
131 /// <param name="cipher">运算模式</param>
132 /// <param name="padding">填充模式</param>
133 /// <returns></returns>
134 public static byte[] DecryptByDesBytes(byte[] decryptBytes, byte[] keyBytes,
135 CipherMode cipher = CipherMode.ECB, PaddingMode padding = PaddingMode.Zeros)
136 {
137 var des = new DESCryptoServiceProvider
138 {
139 Key = keyBytes,
140 IV = keyBytes,
141 Mode = cipher,
142 Padding = padding
143 };
144 var outputBytes = des.CreateDecryptor().TransformFinalBlock(decryptBytes, 0, decryptBytes.Length);
145 return outputBytes;
146 }
147
148 #endregion
149
150 }
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
作者:꧁执笔小白꧂