using System.Security.Cryptography; //引入命名空间 public sealed class MD5Hashing
{ private static MD5 md5 = MD5.Create(); private MD5Hashing() { } /**//// <summary> /// 将字符串加密 /// </summary> /// <param name="sourceString">需要加密的字符串</param> /// <returns>MD5加密后字符串</returns> public static string HashString(string sourceString) { return HashString("gb2312", sourceString); } /**//// <summary> /// 字符串MD5加密 /// </summary> /// <param name="codeName">编码类型</param> /// <param name="sourceString">需要加密的字符串</param> /// <returns>MD5加密后字符串</returns> public static string HashString(string codeName, string sourceString) { byte[] source = md5.ComputeHash(Encoding.GetEncoding(codeName).GetBytes(sourceString)); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < source.Length; i++) { sBuilder.Append(source[i].ToString("x")); } return sBuilder.ToString(); } } 下面的代码展示了一个输入字符串经MD5转换后,是否等同于一个已加密的哈希值: // 验证输入字符串经MD5转换后,是否等同于一个哈希值 public bool VerifyMd5Hash(string input, string hash) { // 将输入字符串MD5加密 string hashOfInput = HashString(input); // 创建一个StringComparer实例来比较两个哈希值 // StringComparer.OrdinalIgnoreCase:获取 StringComparer 对象 // ,该对象执行不区分大小写的序号字符串比较。 StringComparer comparer = StringComparer.OrdinalIgnoreCase; return comparer.Compare(hashOfInput, hash) == 0; } 在上述两段代码中,GetMD5Hash方法常用于用户注册,VerifyMd5Hash方法常用于用户登录。 下面,介绍下StringComparer对象。它表示一种字符串比较操作,该操作使用特定的大小写以及基于区域性的比较规则或序号比较规则。它有6个常用静态属性可以获得实例:
然后,调用StringComparer实例的Compare方法,即可使用指定特性来比较两个字符串是否相等了。 =================================================================================== asp.net通用md5加密 public static string HashString(string sourceString) { return FormsAuthentication.HashPasswordForStoringInConfigFile(sourceString, "md5"); } |
|