MD5密钥的加密,解密 生成密钥
2016-03-25 09:25
489 查看
/// <summary> /// 加密 /// </summary> /// <param name="toEncrypt">要加密的字符串,即明文</param> /// <param name="key">公共密钥</param> /// <param name="useHashing">是否使用MD5生成机密秘钥</param> /// <returns>加密后的字符串,即密文</returns> public static string Encrypt(string toEncrypt, string key, bool useHashing) { try { byte[] keyArray; byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt); if (useHashing) { MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); } else keyArray = UTF8Encoding.UTF8.GetBytes(key); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); tdes.Key = keyArray; tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tdes.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } catch { } return string.Empty; } /// <summary> /// 解密 /// </summary> /// <param name="toDecrypt">要解密的字符串,即密文</param> /// <param name="key">公共密钥</param> /// <param name="useHashing">是否使用MD5生成机密密钥</param> /// <returns>解密后的字符串,即明文</returns> public static string Decrypt(string toDecrypt, string key, bool useHashing) { try { byte[] keyArray; byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); if (useHashing) { MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); } else keyArray = UTF8Encoding.UTF8.GetBytes(key); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); tdes.Key = keyArray; tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tdes.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return UTF8Encoding.UTF8.GetString(resultArray); } catch { } return string.Empty; }
相关文章推荐
- Employee
- linux分享六:进程管理
- 牛顿法
- spring IoC和AOP的原理
- opencv安装路径出错
- WINP界面
- IP地址,子网掩码,默认网关
- nyist 252 01串
- Linux C标准
- Android AIDL 进程间通信详解
- (java)多线程之CountdownLatch的简单示例
- HttpURLConnection:POST和GET 网络请求
- Longest Substring Without Repeating Characters
- abstract关键字
- hadoop的HDFS文件存储
- 解决用手机自带GPS获取经纬度location为空的问题
- Asterisk拨号方案语法基础
- 苹果Xcode帮助文档阅读指南
- 图片隐写术
- dom paser