在程式中經常都要用到訊息摘要演算法, 如密碼的摘要演算法. 不過在.NET中的處理方式稍微有那麼一點複雜了, 有時候我們希望以更簡單的方式完成, 下面的代碼是可以簡化這個處理: using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; namespace OOHacker.Example ... { public class MyMessageDigest ...{ //========================================================================= // 返回長為40位的SHA-1加密字串 //========================================================================= public static string HexSHA(string text) ...{ return MakeDigestTemplate(SHA1.Create(), text); } //========================================================================= // 返回長為32位的MD5加密字串 //========================================================================= public static string HexMD5(string text) ...{ return MakeDigestTemplate(MD5.Create(), text); } //========================================================================= // 加密模板 //========================================================================= private static string MakeDigestTemplate(HashAlgorithm algo, string text) ...{ byte[] data = algo.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text)); StringBuilder codes = new StringBuilder(); for (int i = 0; i < data.Length; ++i) ...{ codes.Append(data[i].ToString("x2")); } return codes.ToString(); } } }
使用方法很簡單,如下所示: string strmd5 = MyMessageDigest.HexMD5( " oohacker " ); string strsha = MyMessageDigest.HexSHA( " oohacker " ); Console.WriteLine( " Hex MD5 Encryption: {0} " , strmd5); Console.WriteLine( " Hex SHA-1 Encryption: {0} " , strsha);
輸出結果如下:
Hex MD5 Encryption: eccca05fb779dcece81656890773b7bf Hex SHA-1 Encryption: 67576ffe5410fb70651ef8fd550ecdb7a9901603