完整加密类(提供MD5,SHA1,SHA256,SHA512,DES加密和解密)
来源:互联网 发布:spine for mac 编辑:程序博客网 时间:2024/05/16 11:20
/// <summary> /// 类名:HashEncrypt /// 作用:对传入的字符串进行Hash运算,返回通过Hash算法加密过的字串。 /// 属性:[无] /// 构造函数额参数: /// IsReturnNum:是否返回为加密后字符的Byte代码 /// IsCaseSensitive:是否区分大小写。 /// 方法:此类提供MD5,SHA1,SHA256,SHA512等四种算法,加密字串的长度依次增大。 /// </summary> public class HashEncrypt { //private string strIN; private bool isReturnNum; private bool isCaseSensitive; public HashEncrypt(bool IsCaseSensitive, bool IsReturnNum) { this.isReturnNum = IsReturnNum; this.isCaseSensitive = IsCaseSensitive; } private string GetStrIN(string strIN) { //string strIN = strIN; if (strIN.Length == 0) { strIN = "~NULL~"; } if (isCaseSensitive == false) { strIN = strIN.ToUpper(); } return strIN; } public string MD5Encrypt(string strIN) { //string strIN = getstrIN(strIN); byte[] tmpByte; MD5 md5 = new MD5CryptoServiceProvider(); tmpByte = md5.ComputeHash(GetKeyByteArray(GetStrIN(strIN))); md5.Clear(); return GetStringValue(tmpByte); } public string SHA1Encrypt(string strIN) { //string strIN = getstrIN(strIN); byte[] tmpByte; SHA1 sha1 = new SHA1CryptoServiceProvider(); tmpByte = sha1.ComputeHash(GetKeyByteArray(strIN)); sha1.Clear(); return GetStringValue(tmpByte); } public string SHA256Encrypt(string strIN) { //string strIN = getstrIN(strIN); byte[] tmpByte; SHA256 sha256 = new SHA256Managed(); tmpByte = sha256.ComputeHash(GetKeyByteArray(strIN)); sha256.Clear(); return GetStringValue(tmpByte); } public string SHA512Encrypt(string strIN) { //string strIN = getstrIN(strIN); byte[] tmpByte; SHA512 sha512 = new SHA512Managed(); tmpByte = sha512.ComputeHash(GetKeyByteArray(strIN)); sha512.Clear(); return GetStringValue(tmpByte); } /// <summary> /// 使用DES加密(Added by niehl 2005-4-6) /// </summary> /// <param name="originalValue">待加密的字符串</param> /// <param name="key">密钥(最大长度8)</param> /// <param name="IV">初始化向量(最大长度8)</param> /// <returns>加密后的字符串</returns> public string DESEncrypt(string originalValue, string key, string IV) { //将key和IV处理成8个字符 key += "12345678"; IV += "12345678"; key = key.Substring(0, 8); IV = IV.Substring(0, 8); SymmetricAlgorithm sa = new DESCryptoServiceProvider(); sa.Key = Encoding.UTF8.GetBytes(key); sa.IV = Encoding.UTF8.GetBytes(IV); ICryptoTransform ct = sa.CreateEncryptor(); byte[] byt = Encoding.UTF8.GetBytes(originalValue); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } public string DESEncrypt(string originalValue, string key) { return DESEncrypt(originalValue, key, key); } /// <summary> /// 使用DES解密(Added by niehl 2005-4-6) /// </summary> /// <param name="encryptedValue">待解密的字符串</param> /// <param name="key">密钥(最大长度8)</param> /// <param name="IV">m初始化向量(最大长度8)</param> /// <returns>解密后的字符串</returns> public string DESDecrypt(string encryptedValue, string key, string IV) { //将key和IV处理成8个字符 key += "12345678"; IV += "12345678"; key = key.Substring(0, 8); IV = IV.Substring(0, 8); SymmetricAlgorithm sa = new DESCryptoServiceProvider(); sa.Key = Encoding.UTF8.GetBytes(key); sa.IV = Encoding.UTF8.GetBytes(IV); ICryptoTransform ct = sa.CreateDecryptor(); byte[] byt = Convert.FromBase64String(encryptedValue); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Encoding.UTF8.GetString(ms.ToArray()); } public string DESDecrypt(string encryptedValue, string key) { return DESDecrypt(encryptedValue, key, key); } private string GetStringValue(byte[] Byte) { string tmpString = string.Empty; if (this.isReturnNum == false) { ASCIIEncoding Asc = new ASCIIEncoding(); tmpString = Asc.GetString(Byte); } else { int iCounter; for (iCounter = 0; iCounter < Byte.Length; iCounter++) { tmpString = tmpString + Byte[iCounter].ToString(); } } return tmpString; } private byte[] GetKeyByteArray(string strKey) { ASCIIEncoding Asc = new ASCIIEncoding(); int tmpStrLen = strKey.Length; byte[] tmpByte = new byte[tmpStrLen - 1]; tmpByte = Asc.GetBytes(strKey); return tmpByte; } }
- 完整加密类(提供MD5,SHA1,SHA256,SHA512,DES加密和解密)
- .net实现md5加密 sha1加密 sha256加密 sha384加密 sha512加密 des加密解密
- C# .Net 的加密(DES加密解密,MD5,SHA1)
- C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
- C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
- C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
- SHA1、MD5、DES加密
- SHA1、MD5、DES加密
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- MD5和SHA1加密,DES加密和解密,Base64编码解码。
- DES加密解密 md5加密
- C# 加密解密(DES,3DES,MD5,Base64) 类
- Windows store app Hash(MD5/SHA1/SHA256/SHA384/SHA512)
- 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
- 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
- 封装好的加密解密函数(URL加密解密、sha1加密解密、des加密解密)
- 使用 LDAP 协议将 ClearQuest 用户与 Windows 域用户统一管理
- ubuntu nfs配置
- 揪出Win7里隐藏的微软官方Windows7主题包
- Sybase配置参数
- 网上流传的《名侦探柯南》大结局十二种!
- 完整加密类(提供MD5,SHA1,SHA256,SHA512,DES加密和解密)
- 上海看全国都是乡下...
- 成功的在项目中使用Squirrel
- 宽字符与多字符集(LPTSTR、LPCSTR、LPCTSTR、LPSTR)
- 09 12 07 Java学习笔记
- js屏蔽鼠标右键
- 辨别真假之-----圣恩辨别真伪 思格魔方提供 ♂ & ♀
- Asp.Net 动态生成验证码
- hibernate事务与并发