手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

DotNet中用到的加密算法总结

来源:互联网 作者:west263.com 时间:2008-02-22
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

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;

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!