C# MD5 类

来源:互联网 发布:php免费源码下载 编辑:程序博客网 时间:2024/06/06 15:04

表示 MD5 哈希算法的所有实现均从中继承的抽象类。

命名空间:System.Security.Cryptography
程序集:mscorlib(在 mscorlib.dll 中)

[ComVisibleAttribute(true)] public abstract class MD5 : HashAlgorithm
备注

哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。

MD5 算法的哈希值大小为 128 位。

MD5 类的 ComputeHash 方法将哈希作为 16 字节的数组返回。请注意,某些 MD5 实现会生成 32 字符的十六进制格式哈希。若要与此类实现进行互操作,请将ComputeHash 方法的返回值格式化为十六进制值。

示例

下面的代码示例计算字符串的 MD5 哈希值,并将该哈希作为 32 字符的十六进制格式字符串返回。此代码示例中创建的哈希字符串与能创建 32 字符的十六进制格式哈希字符串的任何 MD5 哈希函数(在任何平台上)兼容。

using System;using System.Security.Cryptography;using System.Text;class Example{    // Hash an input string and return the hash as    // a 32 character hexadecimal string.    static string getMd5Hash(string input)    {        // Create a new instance of the MD5CryptoServiceProvider object.        MD5 md5Hasher = MD5.Create();        // Convert the input string to a byte array and compute the hash.        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));        // Create a new Stringbuilder to collect the bytes        // and create a string.        StringBuilder sBuilder = new StringBuilder();        // Loop through each byte of the hashed data         // and format each one as a hexadecimal string.        for (int i = 0; i < data.Length; i++)        {            sBuilder.Append(data[i].ToString("x2"));        }        // Return the hexadecimal string.        return sBuilder.ToString();    }    // Verify a hash against a string.    static bool verifyMd5Hash(string input, string hash)    {        // Hash the input.        string hashOfInput = getMd5Hash(input);        // Create a StringComparer an comare the hashes.        StringComparer comparer = StringComparer.OrdinalIgnoreCase;        if (0 == comparer.Compare(hashOfInput, hash))        {            return true;        }        else        {            return false;        }    }    static void Main()    {        string source = "Hello World!";                string hash = getMd5Hash(source);        Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");        Console.WriteLine("Verifying the hash...");        if (verifyMd5Hash(source, hash))        {            Console.WriteLine("The hashes are the same.");        }        else        {            Console.WriteLine("The hashes are not same.");        }            }}// This code example produces the following output://// The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.// Verifying the hash...// The hashes are the same.

继承层次结构

System.Object
   System.Security.Cryptography.HashAlgorithm
    System.Security.Cryptography.MD5
       System.Security.Cryptography.MD5CryptoServiceProvider
线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。
转自:http://msdn.microsoft.com/zh-cn/library/system.security.cryptography.md5(v=vs.80).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

原创粉丝点击