c#用MD5 加密登录密码加密 怎么实现

用户名:周金桥
文章数:251
评论数:883
访问量:2341613
注册日期:
阅读量:1297
阅读量:3317
阅读量:582114
阅读量:466706
51CTO推荐博文
650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />using S 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />using System.T 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />using System.Security.C 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />namespace Common 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />{ 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &summary& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// 一个实现MD5散列字符串的类 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// 作者:周公 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// 日期:2007 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &/summary& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />publicsealedclass MD5Hashing 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & &{ 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />privatestatic MD5 md5 = MD5.Create(); 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />//私有化构造函数 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />private MD5Hashing() 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & & &{ 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & & &} 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &summary& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// 使用utf8编码将字符串散列 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &/summary& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &param name=&sourceString&&要散列的字符串&/param& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &returns&散列后的字符串&/returns& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />publicstaticstring HashString(string sourceString) 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & { 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />return HashString(Encoding.UTF8, sourceString); 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & } 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &summary& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// 使用指定的编码将字符串散列 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &/summary& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &param name=&encode&&编码&/param& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &param name=&sourceString&&要散列的字符串&/param& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />/// &returns&散列后的字符串&/returns& 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />publicstaticstring HashString(Encoding encode, string sourceString) 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & & &{ 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />byte[] source = puteHash(encode.GetBytes(sourceString)); 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & & & & & & &StringBuilder sBuilder = new StringBuilder(); 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />for (int i = 0; i & source.L i++) 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & & & & & & &{ 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & & & & & & & & & & &sBuilder.Append(source[i].ToString(&x2&)); 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & & & & & & &} 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />return sBuilder.ToString(); 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & & & & & &} 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" /> & & & &} 650) this.width=650;" onclick="window.open("/viewpic.php?refimg=" + this.src)" src="http://zhoufoxcn./images/editer/InBlock.gif" align="top" />} 本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
21:45:51 09:47:04//SHA-1算法string password = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Password.Text, "SHA1");//MD5算法string password1 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Password.Text, "MD5");加密后生成不可逆密文保存到数据库中。用户登录时用加密计算后的密文与数据库中的密码密文比较。一致则通过验证,不一致则返回登录错误。这种加密算法是不可逆的,所以除了用户自己,其他人无法得知用户的真实密码内容。SHA-1算法和MD5算法的区别:SHA-1比MD5多32位密文,所以更安全。由于同样的原因,MD5比SHA-1的运算速度更快。加密算法总汇方法一:&&& //须添加对System.Web的引用 &&& using System.Web.S &&&& &&& ... &&&& &&& /// &summary& &&& /// SHA1加密字符串 &&& /// &/summary& &&& /// &param name="source"&源字符串&/param& &&& /// &returns&加密后的字符串&/returns& &&& public string SHA1(string source) &&& { &&&&&&& return FormsAuthentication.HashPasswordForStoringInConfigFile(source, "SHA1"); &&& }
&&& /// &summary& &&& /// MD5加密字符串 &&& /// &/summary& &&& /// &param name="source"&源字符串&/param& &&& /// &returns&加密后的字符串&/returns& &&& public string MD5(string source) &&& { &&&&&&& return FormsAuthentication.HashPasswordForStoringInConfigFile(source, "MD5");; &&& }方法二(可逆加密解密):&&& using System.Security.C &&&& &&& ... &&&& &&& public string Encode(string data) &&& { &&&&&&& byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); &&&&&&& byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); &&&& &&&&&&& DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); &&&&&&& int i = cryptoProvider.KeyS &&&&&&& MemoryStream ms = new MemoryStream(); &&&&&&& CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write); &&&& &&&&&&& StreamWriter sw = new StreamWriter(cst); &&&&&&& sw.Write(data); &&&&&&& sw.Flush(); &&&&&&& cst.FlushFinalBlock(); &&&&&&& sw.Flush(); &&&&&&& return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); &&&& &&& } &&&& &&& public string Decode(string data) &&& { &&&&&&& byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); &&&&&&& byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); &&&& &&&&&&& byte[] byE &&&&&&& try&&&&&&& { &&&&&&&&&&& byEnc = Convert.FromBase64String(data); &&&&&&& } &&&&&&& catch&&&&&&& { &&&&&&&&&&& &&&&&&& } &&&& &&&&&&& DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); &&&&&&& MemoryStream ms = new MemoryStream(byEnc); &&&&&&& CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read); &&&&&&& StreamReader sr = new StreamReader(cst); &&&&&&& return sr.ReadToEnd(); &&& }方法三(MD5不可逆):&&& using System.Security.C &&&& &&& ... &&&& &&& //MD5不可逆加密 &&&& &&& //32位加密 &&&& &&& public string GetMD5_32(string s, string _input_charset) &&& { &&&&&&& MD5 md5 = new MD5CryptoServiceProvider(); &&&&&&& byte[] t = puteHash(Encoding.GetEncoding(_input_charset).GetBytes(s)); &&&&&&& StringBuilder sb = new StringBuilder(32); &&&&&&& for (int i = 0; i & t.L i++) &&&&&&& { &&&&&&&&&&& sb.Append(t[i].ToString("x").PadLeft(2, '0')); &&&&&&& } &&&&&&& return sb.ToString(); &&& } &&&& &&& //16位加密 &&& public static string GetMd5_16(string ConvertString) &&& { &&&&&&& MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); &&&&&&& string t2 = BitConverter.puteHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8); &&&&&&& t2 = t2.Replace("-", ""); &&&&&&& return t2; &&& }方法四(对称加密):&&& using System.IO; &&& using System.Security.C &&&& &&& ... &&&& &&& private SymmetricAlgorithm mobjCryptoS &&& private string K &&& /// &summary&&&& &&& /// 对称加密类的构造函数&&& &&& /// &/summary&&&& &&& public SymmetricMethod() &&& { &&&&&&& mobjCryptoService = new RijndaelManaged(); &&&&&&& Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7"; &&& } &&& /// &summary&&&& &&& /// 获得密钥&&& &&& /// &/summary&&&& &&& /// &returns&密钥&/returns&&&& &&& private byte[] GetLegalKey() &&& { &&&&&&& string sTemp = K &&&&&&& mobjCryptoService.GenerateKey(); &&&&&&& byte[] bytTemp = mobjCryptoService.K &&&&&&& int KeyLength = bytTemp.L &&&&&&& if (sTemp.Length & KeyLength) &&&&&&&&&&& sTemp = sTemp.Substring(0, KeyLength); &&&&&&& else if (sTemp.Length & KeyLength) &&&&&&&&&&& sTemp = sTemp.PadRight(KeyLength, ' '); &&&&&&& return ASCIIEncoding.ASCII.GetBytes(sTemp); &&& } &&& /// &summary&&&& &&& /// 获得初始向量IV&&& &&& /// &/summary&&&& &&& /// &returns&初试向量IV&/returns&&&& &&& private byte[] GetLegalIV() &&& { &&&&&&& string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk"; &&&&&&& mobjCryptoService.GenerateIV(); &&&&&&& byte[] bytTemp = mobjCryptoService.IV; &&&&&&& int IVLength = bytTemp.L &&&&&&& if (sTemp.Length & IVLength) &&&&&&&&&&& sTemp = sTemp.Substring(0, IVLength); &&&&&&& else if (sTemp.Length & IVLength) &&&&&&&&&&& sTemp = sTemp.PadRight(IVLength, ' '); &&&&&&& return ASCIIEncoding.ASCII.GetBytes(sTemp); &&& } &&& /// &summary&&&& &&& /// 加密方法&&& &&& /// &/summary&&&& &&& /// &param name="Source"&待加密的串&/param&&&& &&& /// &returns&经过加密的串&/returns&&&& &&& public string Encrypto(string Source) &&& { &&&&&&& byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source); &&&&&&& MemoryStream ms = new MemoryStream(); &&&&&&& mobjCryptoService.Key = GetLegalKey(); &&&&&&& mobjCryptoService.IV = GetLegalIV(); &&&&&&& ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor(); &&&&&&& CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write); &&&&&&& cs.Write(bytIn, 0, bytIn.Length); &&&&&&& cs.FlushFinalBlock(); &&&&&&& ms.Close(); &&&&&&& byte[] bytOut = ms.ToArray(); &&&&&&& return Convert.ToBase64String(bytOut); &&& } &&& /// &summary&&&& &&& /// 解密方法&&& &&& /// &/summary&&&& &&& /// &param name="Source"&待解密的串&/param&&&& &&& /// &returns&经过解密的串&/returns&&&& &&& public string Decrypto(string Source) &&& { &&&&&&& byte[] bytIn = Convert.FromBase64String(Source); &&&&&&& MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length); &&&&&&& mobjCryptoService.Key = GetLegalKey(); &&&&&&& mobjCryptoService.IV = GetLegalIV(); &&&&&&& ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor(); &&&&&&& CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read); &&&&&&& StreamReader sr = new StreamReader(cs); &&&&&&& return sr.ReadToEnd(); &&& }方法五:&&& using System.IO; &&& using System.Security.C &&& using System.T &&&& &&& ... &&&& &&& //默认密钥向量 &&& private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; &&& /// &summary& &&& /// DES加密字符串 &&& /// &/summary& &&& /// &param name="encryptString"&待加密的字符串&/param& &&& /// &param name="encryptKey"&加密密钥,要求为8位&/param& &&& /// &returns&加密成功返回加密后的字符串,失败返回源串&/returns& &&& public static string EncryptDES(string encryptString, string encryptKey) &&& { &&&&&&& try&&&&&&& { &&&&&&&&&&& byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8)); &&&&&&&&&&& byte[] rgbIV = K &&&&&&&&&&& byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); &&&&&&&&&&& DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider(); &&&&&&&&&&& MemoryStream mStream = new MemoryStream(); &&&&&&&&&&& CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); &&&&&&&&&&& cStream.Write(inputByteArray, 0, inputByteArray.Length); &&&&&&&&&&& cStream.FlushFinalBlock(); &&&&&&&&&&& return Convert.ToBase64String(mStream.ToArray()); &&&&&&& } &&&&&&& catch&&&&&&& { &&&&&&&&&&& return encryptS &&&&&&& } &&& } &&&& &&& /// &summary& &&& /// DES解密字符串 &&& /// &/summary& &&& /// &param name="decryptString"&待解密的字符串&/param& &&& /// &param name="decryptKey"&解密密钥,要求为8位,和加密密钥相同&/param& &&& /// &returns&解密成功返回解密后的字符串,失败返源串&/returns& &&& public static string DecryptDES(string decryptString, string decryptKey) &&& { &&&&&&& try&&&&&&& { &&&&&&&&&&& byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey); &&&&&&&&&&& byte[] rgbIV = K &&&&&&&&&&& byte[] inputByteArray = Convert.FromBase64String(decryptString); &&&&&&&&&&& DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); &&&&&&&&&&& MemoryStream mStream = new MemoryStream(); &&&&&&&&&&& CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); &&&&&&&&&&& cStream.Write(inputByteArray, 0, inputByteArray.Length); &&&&&&&&&&& cStream.FlushFinalBlock(); &&&&&&&&&&& return Encoding.UTF8.GetString(mStream.ToArray()); &&&&&&& } &&&&&&& catch&&&&&&& { &&&&&&&&&&& return decryptS &&&&&&& } &&& }方法六(文件加密):&&& using System.IO; &&& using System.Security.C &&& using System.T &&&& &&& ... &&&& &&& //加密文件 &&& private static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV) &&& { &&&&&&& //Create the file streams to handle the input and output files. &&&&&&& FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read); &&&&&&& FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write); &&&&&&& fout.SetLength(0); &&&& &&&&&&& //Create variables to help with read and write. &&&&&&& byte[] bin = new byte[100]; //This is intermediate storage for the encryption. &&&&&&& long rdlen = 0;&&&&&&&&&&&&& //This is the total number of bytes written. &&&&&&& long totlen = fin.L&&& //This is the total length of the input file. &&&&&&&&&&&&&&&&&&&&&&&&&&& //This is the number of bytes to be written at a time. &&&& &&&&&&& DES des = new DESCryptoServiceProvider(); &&&&&&& CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write); &&&& &&&&&&& //Read from the input file, then encrypt and write to the output file. &&&&&&& while (rdlen & totlen) &&&&&&& { &&&&&&&&&&& len = fin.Read(bin, 0, 100); &&&&&&&&&&& encStream.Write(bin, 0, len); &&&&&&&&&&& rdlen = rdlen + &&&&&&& } &&&& &&&&&&& encStream.Close(); &&&&&&& fout.Close(); &&&&&&& fin.Close(); &&& } &&&& &&& //解密文件 &&& private static void DecryptData(String inName, String outName, byte[] desKey, byte[] desIV) &&& { &&&&&&& //Create the file streams to handle the input and output files. &&&&&&& FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read); &&&&&&& FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write); &&&&&&& fout.SetLength(0); &&&& &&&&&&& //Create variables to help with read and write. &&&&&&& byte[] bin = new byte[100]; //This is intermediate storage for the encryption. &&&&&&& long rdlen = 0;&&&&&&&&&&&&& //This is the total number of bytes written. &&&&&&& long totlen = fin.L&&& //This is the total length of the input file. &&&&&&&&&&&&&&&&&&&&&&&&&&& //This is the number of bytes to be written at a time. &&&& &&&&&&& DES des = new DESCryptoServiceProvider(); &&&&&&& CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write); &&&& &&&&&&& //Read from the input file, then encrypt and write to the output file. &&&&&&& while (rdlen & totlen) &&&&&&& { &&&&&&&&&&& len = fin.Read(bin, 0, 100); &&&&&&&&&&& encStream.Write(bin, 0, len); &&&&&&&&&&& rdlen = rdlen + &&&&&&& } &&&& &&&&&&& encStream.Close(); &&&&&&& fout.Close(); &&&&&&& fin.Close();
}using Susing System.Security.C//这个是处理文字编码的前提using System.Tusing System.IO;/// &summary&/// DES加密方法/// &/summary&/// &param name="strPlain"&明文&/param&/// &param name="strDESKey"&密钥&/param&/// &param name="strDESIV"&向量&/param&/// &returns&密文&/returns&public string DESEncrypt(string strPlain,string strDESKey,string strDESIV){ //把密钥转换成字节数组 byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey); //把向量转换成字节数组 byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV); //声明1个新的DES对象 DESCryptoServiceProvider desEncrypt=new DESCryptoServiceProvider(); //开辟一块内存流 MemoryStream msEncrypt=new MemoryStream(); //把内存流对象包装成加密流对象 CryptoStream csEncrypt=new CryptoStream(msEncrypt,desEncrypt.CreateEncryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Write); //把加密流对象包装成写入流对象 StreamWriter swEncrypt=new StreamWriter(csEncrypt); //写入流对象写入明文 swEncrypt.WriteLine(strPlain); //写入流关闭 swEncrypt.Close(); //加密流关闭 csEncrypt.Close(); //把内存流转换成字节数组,内存流现在已经是密文了 byte[] bytesCipher=msEncrypt.ToArray(); //内存流关闭 msEncrypt.Close(); //把密文字节数组转换为字符串,并返回 return UnicodeEncoding.Unicode.GetString(bytesCipher);}
/// &summary&/// DES解密方法/// &/summary&/// &param name="strCipher"&密文&/param&/// &param name="strDESKey"&密钥&/param&/// &param name="strDESIV"&向量&/param&/// &returns&明文&/returns&public string DESDecrypt(string strCipher,string strDESKey,string strDESIV){ //把密钥转换成字节数组 byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey); //把向量转换成字节数组 byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV); //把密文转换成字节数组 byte[] bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher); //声明1个新的DES对象 DESCryptoServiceProvider desDecrypt=new DESCryptoServiceProvider(); //开辟一块内存流,并存放密文字节数组 MemoryStream msDecrypt=new MemoryStream(bytesCipher); //把内存流对象包装成解密流对象 CryptoStream csDecrypt=new CryptoStream(msDecrypt,desDecrypt.CreateDecryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Read); //把解密流对象包装成读出流对象 StreamReader srDecrypt=new StreamReader(csDecrypt); //明文=读出流的读出内容 string strPlainText=srDecrypt.ReadLine(); //读出流关闭 srDecrypt.Close(); //解密流关闭 csDecrypt.Close(); //内存流关闭 msDecrypt.Close(); //返回明文 return strPlainT}
阅读(...) 评论()

我要回帖

更多关于 用户登录密码加密 的文章

 

随机推荐