1、加密解密常用函数本帖最后由 小平 于 2013-6-22 10:05 编辑#region DES加密解密 / / DES加密 / / 待加密字串 / 32位Key值 / 加密后的字符串 public string DESEncrypt(string strSource) return DESEncrypt(strSource, DESKey); public string DESEncrypt(string strSource, byte key) SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = Cipher
2、Mode.ECB; sa.Padding = PaddingMode.Zeros; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write); byte byt = Encoding.Unicode.GetBytes(strSource); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase
3、64String(ms.ToArray(); / / DES解密 / / 待解密的字串 / 32位Key值 / 解密后的字符串 public string DESDecrypt(string strSource) return DESDecrypt(strSource, DESKey); public string DESDecrypt(string strSource, byte key) SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = CipherMode.ECB; sa.Padding = Paddin
4、gMode.Zeros; ICryptoTransform ct = sa.CreateDecryptor(); byte byt = Convert.FromBase64String(strSource); MemoryStream ms = new MemoryStream(byt); CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read); StreamReader sr = new StreamReader(cs, Encoding.Unicode); return sr.ReadToEnd(); #endre
5、gion #region 一个用hash实现的加密解密方法 / / 加密 / / / public static string EncryptStrByHash(string src) if (src.Length = 0) return ; byte HaKey = System.Text.Encoding.ASCII.GetBytes(src + Test).ToCharArray(); byte HaData = new byte20; HMACSHA1 Hmac = new HMACSHA1(HaKey); CryptoStream cs = new CryptoStream(Stre
6、am.Null, Hmac, CryptoStreamMode.Write); try cs.Write(HaData, 0, HaData.Length); finally cs.Close(); string HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0, 16); byte RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray(); byte RiDataBuf = System.Text.Encoding.ASCII.GetByt
7、es(src.ToCharArray(); byte EncodedBytes = ; MemoryStream ms = new MemoryStream(); RijndaelManaged rv = new RijndaelManaged(); cs = new CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write); try cs.Write(RiDataBuf, 0, RiDataBuf.Length); cs.FlushFinalBlock(); EncodedBytes = ms.ToA
8、rray(); finally ms.Close(); cs.Close(); return HaResult + System.Convert.ToBase64String(EncodedBytes); / / 解密 / / / public static string DecrypStrByHash(string src) if (src.Length 40) return ; byte SrcBytes = System.Convert.FromBase64String(src.Substring(16); byte RiKey = System.Text.Encoding.ASCII.
9、GetBytes(src.Substring(0, 16).ToCharArray(); byte InitialText = new byteSrcBytes.Length; RijndaelManaged rv = new RijndaelManaged(); MemoryStream ms = new MemoryStream(SrcBytes); CryptoStream cs = new CryptoStream(ms, rv.CreateDecryptor(RiKey, RiKey), CryptoStreamMode.Read); try cs.Read(InitialText, 0, InitialText.Length); finally ms.Close(); cs.Close(); System.Text.StringBuilder Result = new System.Text.StringBuilder(); for (int i = 0; i 0) Result.Append(char)InitialText); return Result.ToString(); / / 对加密后的密文重新编码,如果密文长16,则去掉前16个字符,如果长度小于16,返回空字符串 / / para
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1