DotNet中用到的加密算法总结_[Asp.Net教程] 1public 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 /**//// 41 /// DES + Base64 加密 42 /// 43 /// 明文字符串 44 /// 已加密字符串 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 69 { 70 Console.Write(answer[j].ToString()+ " "); 71 } 72 Console.WriteLine(); 73 return Convert.ToBase64String(ms.ToArray()); // 将加密的 byte 数组依照 Base64 编码转换成字符串 74 } 75 76 /**//// 77 /// DES + Base64 解密 78 /// 79 /// 密文字符串 80 /// 解密字符串 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 /**//// 108 /// DES + Base64 加密 109 /// 110 /// 明文字符串 111 /// 已加密字符串 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;j136 { 137 Console.Write(answer[j].ToString()+ " "); 138 } 139 Console.WriteLine(); 140 return Convert.ToBase64String(ms.ToArray()); // 将加密的 byte 数组依照 Base64 编码转换成字符串 141 } 142 143 144 /**//// 145 /// DES + Base64 解密 146 /// 147 /// 密文字符串 148 /// 解密字符串 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 /**//// 175 /// 3DES 加密 Byte[] to HEX string 176 /// 177 /// 明文字符串 178 /// 已加密字符串 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;j210 { 211 result += answer[j].ToString("x").PadLeft(2,'0'); 212 } 213 return result; 214 } 215 216 /**//// 217 /// 3DES + HEX to byte[] 解密 218 /// 219 /// 密文字符串 220 /// 解密字符串 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;i245 { 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 /**//// 260 /// Base64解码 261 /// 262 /// 263 /// 264 public static string DecodingFromBase64(string base64Str) 265 { 266 Byte[] bytes = Convert.FromBase64String(base64Str); 267 return System.Text.Encoding.UTF8.GetString(bytes); 268 } 269 /**//// 270 /// Base64编码 271 /// 272 /// 273 /// 274 public static string EncodingToBase64(string str) 275 { 276 return Convert.ToBase64String(Encoding.UTF8.GetBytes(str)); 277 } 278 /**//// 279 /// 根据指定的编码方式Base64解码 280 /// 281 /// 282 /// 283 /// 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 /**//// 290 /// 根据指定的编码方式Base64编码 291 /// 292 /// 293 /// 294 /// 295 public static string EncodingToBase64(string str,System.Text.Encoding strEncoding) 296 { 297 return Convert.ToBase64String(strEncoding.GetBytes(str)); 298 } 299 } 两个常用的方法
1 /**//// 2 /// 通过字节数组形式的密钥获取字符串形式的密钥 3 /// 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 /**//// 12 /// 通过字符串形式的密钥获取字节数组形式的密钥 13 /// 14 void GetByteArrayByString() 15 { 16 string key = "82788711"; 17 Response.Write(System.Text.Encoding.Default.GetBytes(key)); 18 Response.End(); 19 20 }
有这里没包括的,欢迎回复,大家一起总结一下~~ http://www.cnblogs.com/goody9807/archive/2007/01/23/627785.html
|