public class CryptUtil2
{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 string176
/// </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,6194
}; 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,6234
}; 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
}两个常用的方法
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
}
/// <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
}
