DotNet中用到的加密算法总结

转载 2007年10月01日 12:29:00
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 = {0x630x680x650x6E0x790x750x610x6E};
 11            byte[] IV = {0xFE0xDC0xBA0x980x760x540x320x10};
 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 = {0x630x680x650x6E0x790x750x610x6E};
 31            byte[] IV = {0xFE0xDC0xBA0x980x760x540x320x10};
 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    }

两个常用的方法

 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        }



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

 

http://www.cnblogs.com/goody9807/archive/2007/01/23/627785.html

 

JAVA中常用的加密算法总结

项目中第一次深入地了解到加密算法的使用,现第一阶段结束,将使用到的加密算法和大家分享一下:首先还是先给大家普及一下常用加密算法的基础知识基本的单向加密算法 BASE64 严格地说,属于编码格式,而非加...
  • chenbing81
  • chenbing81
  • 2016年07月15日 00:40
  • 2643

Android 数据加密算法总结

安卓中,不管是内网还是外网,数据的传输首要考虑就是安全问题,尤其是用户信息,以及各种密码等敏感信息。 所以说,对数据的加密是很有必要的,尤其是当下物联网蓬勃发展的今天,数据安全尤为重要。 因此本人...
  • u012874222
  • u012874222
  • 2016年04月05日 00:13
  • 3770

Java 加解密技术系列之 总结

序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的保护。同时,由于水平的限制,打算这个系列就到此为止了,这篇文章就算是一个总结吧,...
  • happylee6688
  • happylee6688
  • 2015年04月27日 11:52
  • 2857

DotNet中几种常用的加密算法

在.NET项目中,我们较多的使用到加密这个操作。因为在现代的项目中,对信息安全的要求越来越高,那么多信息的加密就变得至关重要。现在提供几种常用的加密/解密算法。   1.用于文本和Base64编...
  • zouye4456
  • zouye4456
  • 2017年04月06日 14:14
  • 66

加密算法总结

  • 2013年10月18日 11:30
  • 519KB
  • 下载

关于加密算法的总结

  • 2013年11月06日 22:04
  • 24KB
  • 下载

加密算法总结

  • 2012年10月25日 14:22
  • 55KB
  • 下载

JAVA加密算法实现总结

  • 2009年08月04日 11:28
  • 124KB
  • 下载

AES、DES、RSA、MD5、Base64加密算法总结

AES、DES、RSA、MD5、Base64加密算法总结 AES、DES加密速度快,适合大量数据,des容易破解,一般用3重des,后来又出现了更快更安全的aes RSA是公钥加密,速度慢,只...
  • u013623705
  • u013623705
  • 2018年01月12日 12:48
  • 36

https通讯原理、加密算法、证书整理总结

前段时间对接了好多外部接口,很多都是https的,还有证书,还有一些加密的。对这块不是太了解,就查资料整理总结实践下。消化掉的知识,才是真正属于自己的。 1、https       HTTPS(全称...
  • abasen
  • abasen
  • 2016年03月04日 18:35
  • 4300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DotNet中用到的加密算法总结
举报原因:
原因补充:

(最多只允许输入30个字)