public string Second_MD5(string str) { MD5 md5 = MD5.Create();//创建MD5实例 byte[] strbyte = Encoding.UTF8.GetBytes(str);//用UTF8这样对于汉字的编码就和网上一样了 byte[] mdbyte = md5.ComputeHash(strbyte);//将字节数组转成哈希值 StringBuilder sb = new StringBuilder(); //将加密之后的二进制数组转换成字符串进行输出 //是将二进制数组中的每一个元素逐个转换成字符串 foreach (var item in mdbyte) { sb.Append(item.ToString("x2"));//将哈希值中字节数组逐个转成16进制 } return sb.ToString(); }
PS:得到文件的MD5值:
private static string GetMD5HashFromFile(string fileName) { try { FileStream file = new FileStream(fileName, FileMode.Open); System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] retVal = md5.ComputeHash(file); file.Close(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } return sb.ToString(); } catch (Exception ex) { throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message); } }
另一种常用的加密算法:SHA1
public string CreateSha1(string str) { SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); byte[] utf8Byte = Encoding.UTF8.GetBytes(str); byte[] hashByte = sha1.ComputeHash(utf8Byte); //这个方法可以一步实现sha1加密算法 但是提示说是一种过时的方法 在asp.net4.5中已经过时 //string checkSignatureStr = FormsAuthentication.HashPasswordForStoringInConfigFile(str, // System.Web.Configuration.FormsAuthPasswordFormat.SHA1.ToString()); string resultStr = BitConverter.ToString(hashByte); resultStr=resultStr.Replace("-","").ToLower(); return resultStr; }