- #region MD5加密
- /// <summary>
- /// MD5加密
- /// </summary>
- /// <param name="strSource">需要加密的字符串</param>
- /// <returns>MD5加密后的字符串</returns>
- public static string Md5Encrypt(string strSource)
- {
- //把字符串放到byte数组中
- byte[] bytIn = System.Text.Encoding.Default.GetBytes(strSource);
- //建立加密对象的密钥和偏移量
- byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 };//定义偏移量
- byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 };//定义密钥
- //实例DES加密类
- DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();
- mobjCryptoService.Key = iv;
- mobjCryptoService.IV = key;
- ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
- //实例MemoryStream流加密密文件
- System.IO.MemoryStream ms = new System.IO.MemoryStream();
- CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
- cs.Write(bytIn, 0, bytIn.Length);
- cs.FlushFinalBlock();
- return System.Convert.ToBase64String(ms.ToArray());
- }
- #endregion
- #region MD5解密
- /// <summary>
- /// MD5解密
- /// </summary>
- /// <param name="Source">需要解密的字符串</param>
- /// <returns>MD5解密后的字符串</returns>
- public static string Md5Decrypt(string Source)
- {
- Source = Source.Replace(' ', '+'); //注意,IDTM=JI7W/IZIoZadVU+dCqd4WSLFVJb3mK3i 中的"+"通过地址栏传过来时,后台会解析为空格. 最好的做法是 使用、、String.Replace("+", "%2B")先将空格编码,然后再作为参数传给另一页面传递,这样页面在提取参数时才会将“%2B”解码为加号.但这儿为了简化,将空格直接还原为"+"。
- //将解密字符串转换成字节数组
- byte[] bytIn = System.Convert.FromBase64String(Source);
- //给出解密的密钥和偏移量,密钥和偏移量必须与加密时的密钥和偏移量相同
- byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 };//定义偏移量
- byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 };//定义密钥
- DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();
- mobjCryptoService.Key = iv;
- mobjCryptoService.IV = key;
- //实例流进行解密
- System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);
- ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
- CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
- StreamReader strd = new StreamReader(cs, Encoding.Default);
- return strd.ReadToEnd();
- }
- #endregion