1
public class CryptUtil
2
{
3
public static string DecryptString(string input)
4
{
5
if (input.Equals(string.Empty))
6
{
7
return input;
8
}
9
10
byte[] byKey = {0x63, 0x68, 0x65, 0x6E, 0x79, 0x75, 0x61, 0x6E};
11
byte[] IV = {0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10};
12
byte[] inputByteArray = new Byte[input.Length];
13
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
14
inputByteArray = Convert.FromBase64String(input);
15
MemoryStream ms = new MemoryStream();
16
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
17
cs.Write(inputByteArray, 0, inputByteArray.Length);
18
cs.FlushFinalBlock();
19
Encoding encoding = new UTF8Encoding();
20
return encoding.GetString(ms.ToArray());
21
}
22
23
public static string EncryptString(string input)
24
{
25
if (input.Equals(string.Empty))
26
{
27
return input;
28
}
29
30
byte[] byKey = {0x63, 0x68, 0x65, 0x6E, 0x79, 0x75, 0x61, 0x6E};
31
byte[] IV = {0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10};
32
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
33
byte[] inputByteArray = Encoding.UTF8.GetBytes(input);
34
MemoryStream ms = new MemoryStream();
35
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
36
cs.Write(inputByteArray, 0, inputByteArray.Length);
37
cs.FlushFinalBlock();
38
return Convert.ToBase64String(ms.ToArray());
39
}
40
/// <summary>
41
/// DES + Base64 加密
42
/// </summary>
43
/// <param name="input">明文字符串</param>
44
/// <returns>已加密字符串</returns>
45
public static string DesBase64Encrypt(string input)
46
{
47
System.Security.Cryptography.DES des = System.Security.Cryptography.DES.Create();
48
des.Mode = System.Security.Cryptography.CipherMode.ECB;
49
ICryptoTransform ct;
50
MemoryStream ms;
51
CryptoStream cs;
52
byte[] byt;
53
byte[] Key = new byte[8]{56,50,55,56,56,55,49,49};
54
byte[] IV = new byte[8]{0,0,0,0,0,0,0,0};
55
56
ct = des.CreateEncryptor(Key, IV);
57
58
byt = Encoding.GetEncoding("GB2312").GetBytes(input); //根据 GB2312 编码对字符串处理,转换成 byte 数组
59
60
ms = new MemoryStream();
61
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
62
cs.Write(byt, 0, byt.Length);
63
cs.FlushFinalBlock();
64
65
cs.Close();
66
67
byte[] answer = ms.ToArray();
68
for(int j=0;j<answer.Length;j++)
69
{
70
Console.Write(answer[j].ToString()+ " ");
71
}
72
Console.WriteLine();
73
return Convert.ToBase64String(ms.ToArray()); // 将加密的 byte 数组依照 Base64 编码转换成字符串
74
}
75
76
/// <summary>
77
/// DES + Base64 解密
78
/// </summary>
79
/// <param name="input">密文字符串</param>
80
/// <returns>解密字符串</returns>
81
public static string DesBase64Decrypt(string input)
82
{
83
System.Security.Cryptography.DES des = System.Security.Cryptography.DES.Create();
84
des.Mode = System.Security.Cryptography.CipherMode.ECB;
85
ICryptoTransform ct;
86
MemoryStream ms;
87
CryptoStream cs;
88
byte[] byt;
89
byte[] Key = new byte[8]{56,50,55,56,56,55,49,49};
90
byte[] IV = new byte[8]{0,0,0,0,0,0,0,0};
91
92
ct = des.CreateDecryptor(Key, IV);
93
byt = Convert.FromBase64String(input); // 将 密文 以 Base64 编码转换成 byte 数组
94
95
ms = new MemoryStream();
96
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
97
cs.Write(byt, 0, byt.Length);
98
cs.FlushFinalBlock();
99
100
cs.Close();
101
102
return Encoding.GetEncoding("GB2312").GetString(ms.ToArray()); // 将 明文 以 GB2312 编码转换成字符串
103
}
104
105
106
107
/// <summary>
108
/// DES + Base64 加密
109
/// </summary>
110
/// <param name="input">明文字符串</param>
111
/// <returns>已加密字符串</returns>
112
public static string DesBase64EncryptForID5(string input)
113
{
114
System.Security.Cryptography.DES des = System.Security.Cryptography.DES.Create();
115
des.Mode = System.Security.Cryptography.CipherMode.CBC;
116
ICryptoTransform ct;
117
MemoryStream ms;
118
CryptoStream cs;
119
byte[] byt;
120
byte[] Key = new byte[8]{56,50,55,56,56,55,49,49};
121
byte[] IV = new byte[8]{56,50,55,56,56,55,49,49};
122
123
ct = des.CreateEncryptor(Key, IV);
124
125
byt = Encoding.GetEncoding("GB2312").GetBytes(input); //根据 GB2312 编码对字符串处理,转换成 byte 数组
126
127
ms = new MemoryStream();
128
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
129
cs.Write(byt, 0, byt.Length);
130
cs.FlushFinalBlock();
131
132
cs.Close();
133
134
byte[] answer = ms.ToArray();
135
for(int j=0;j<answer.Length;j++)
136
{
137
Console.Write(answer[j].ToString()+ " ");
138
}
139
Console.WriteLine();
140
return Convert.ToBase64String(ms.ToArray()); // 将加密的 byte 数组依照 Base64 编码转换成字符串
141
}
142
143
144
/// <summary>
145
/// DES + Base64 解密
146
/// </summary>
147
/// <param name="input">密文字符串</param>
148
/// <returns>解密字符串</returns>
149
public static string DesBase64DecryptForID5(string input)
150
{
151
System.Security.Cryptography.DES des = System.Security.Cryptography.DES.Create();
152
des.Mode = System.Security.Cryptography.CipherMode.CBC;
153
ICryptoTransform ct;
154
MemoryStream ms;
155
CryptoStream cs;
156
byte[] byt;
157
byte[] Key = new byte[8]{56,50,55,56,56,55,49,49};
158
byte[] IV = new byte[8]{56,50,55,56,56,55,49,49};
159
160
ct = des.CreateDecryptor(Key, IV);
161
byt = Convert.FromBase64String(input); // 将 密文 以 Base64 编码转换成 byte 数组
162
163
ms = new MemoryStream();
164
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
165
cs.Write(byt, 0, byt.Length);
166
cs.FlushFinalBlock();
167
168
cs.Close();
169
170
return Encoding.GetEncoding("GB2312").GetString(ms.ToArray()); // 将 明文 以 GB2312 编码转换成字符串
171
}
172
173
174
/// <summary>
175
/// 3DES 加密 Byte[] to HEX string
176
/// </summary>
177
/// <param name="input">明文字符串</param>
178
/// <returns>已加密字符串</returns>
179
public static string ThreeDesEncryptHEX(string input)
180
{
181
string result = "";
182
System.Security.Cryptography.TripleDES des = System.Security.Cryptography.TripleDES.Create();
183
des.Mode = System.Security.Cryptography.CipherMode.CBC;
184
des.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
185
ICryptoTransform ct;
186
MemoryStream ms;
187
CryptoStream cs;
188
byte[] byt;
189
byte[] Key = new byte[24]{
190
1,2,3,4,5,6,
191
1,2,3,4,5,6,
192
1,2,3,4,5,6,
193
1,2,3,4,5,6
194
};
195
byte[] IV = new byte[8]{1,2,3,4,5,6,1,2};
196
197
ct = des.CreateEncryptor(Key, IV);
198
199
byt = Encoding.GetEncoding("GB2312").GetBytes(input); //根据 GB2312 编码对字符串处理,转换成 byte 数组
200
201
ms = new MemoryStream();
202
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
203
cs.Write(byt, 0, byt.Length);
204
cs.FlushFinalBlock();
205
206
cs.Close();
207
208
byte[] answer = ms.ToArray();
209
for(int j=0;j<answer.Length;j++)
210
{
211
result += answer[j].ToString("x").PadLeft(2,'0');
212
}
213
return result;
214
}
215
216
/// <summary>
217
/// 3DES + HEX to byte[] 解密
218
/// </summary>
219
/// <param name="input">密文字符串</param>
220
/// <returns>解密字符串</returns>
221
public static string ThreeDesDecryptHEX(string input)
222
{
223
System.Security.Cryptography.TripleDES des = System.Security.Cryptography.TripleDES.Create();
224
des.Mode = System.Security.Cryptography.CipherMode.CBC;
225
des.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
226
ICryptoTransform ct;
227
MemoryStream ms;
228
CryptoStream cs;
229
byte[] Key = new byte[24]{
230
1,2,3,4,5,6,
231
1,2,3,4,5,6,
232
1,2,3,4,5,6,
233
1,2,3,4,5,6
234
};
235
byte[] IV = new byte[8]{1,2,3,4,5,6,1,2};
236
237
ct = des.CreateDecryptor(Key, IV);
238
//byt = Convert.FromBase64String(input); // 将 密文 以 HEX to byte[]编码转换成 byte 数组
239
if(input.Length<=1)
240
{
241
throw new Exception("encrypted HEX string is too short!");
242
}
243
byte[] byt = new byte[input.Length/2];
244
for(int i=0;i<byt.Length;i++)
245
{
246
//Console.WriteLine(input.Substring(i*2,2));
247
byt[i] = Convert.ToByte(input.Substring(i*2,2),16);
248
}
249
250
ms = new MemoryStream();
251
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
252
cs.Write(byt, 0, byt.Length);
253
cs.FlushFinalBlock();
254
255
cs.Close();
256
257
return Encoding.GetEncoding("GB2312").GetString(ms.ToArray()); // 将 明文 以 GB2312 编码转换成字符串
258
}
259
/// <summary>
260
/// Base64解码
261
/// </summary>
262
/// <param name="base64Str"></param>
263
/// <returns></returns>
264
public static string DecodingFromBase64(string base64Str)
265
{
266
Byte[] bytes = Convert.FromBase64String(base64Str);
267
return System.Text.Encoding.UTF8.GetString(bytes);
268
}
269
/// <summary>
270
/// Base64编码
271
/// </summary>
272
/// <param name="str"></param>
273
/// <returns></returns>
274
public static string EncodingToBase64(string str)
275
{
276
return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
277
}
278
/// <summary>
279
/// 根据指定的编码方式Base64解码
280
/// </summary>
281
/// <param name="base64Str"></param>
282
/// <param name="strEncoding"></param>
283
/// <returns></returns>
284
public static string DecodingFromBase64(string base64Str,System.Text.Encoding strEncoding)
285
{
286
Byte[] bytes = Convert.FromBase64String(base64Str);
287
return strEncoding.GetString(bytes);
288
}
289
/// <summary>
290
/// 根据指定的编码方式Base64编码
291
/// </summary>
292
/// <param name="str"></param>
293
/// <param name="strEncoding"></param>
294
/// <returns></returns>
295
public static string EncodingToBase64(string str,System.Text.Encoding strEncoding)
296
{
297
return Convert.ToBase64String(strEncoding.GetBytes(str));
298
}
299
}

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

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

两个常用的方法
1
/// <summary>
2
/// 通过字节数组形式的密钥获取字符串形式的密钥
3
/// </summary>
4
void GetStringByByteArray()
5
{
6
byte[] Key = new byte[8]{56,50,55,56,56,55,49,49};
7
Response.Write(System.Text.Encoding.Default.GetString(Key));
8
Response.End();
9
}
10
11
/// <summary>
12
/// 通过字符串形式的密钥获取字节数组形式的密钥
13
/// </summary>
14
void GetByteArrayByString()
15
{
16
string key = "82788711";
17
Response.Write(System.Text.Encoding.Default.GetBytes(key));
18
Response.End();
19
20
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

有这里没包括的,欢迎回复,大家一起总结一下~~