如何创建持久的唯一MD5哈希

时间:2013-04-03 13:00:03

标签: c# hash md5 unique

我想如果我使用默认的MD5函数,那将为不同应用程序的相同字符串创建相同的哈希值

所以我想以某种方式定义一个预静态值,将它赋予MD5函数,并将这些生成的结果赋予我的应用程序的唯一性。

此静态值永远不会在我的应用程序中发生变化,因此它将始终为我的应用程序中的相同字符串生成相同的哈希值

但是如果另一个应用程序使用默认的MD5,它们将无法获得相同的MD5哈希值

我怎样才能用c#5做到这一点? asp.net

以下是我的功能

public static string ConvertStringtoMD5(string strword)
{
    MD5 md5 = MD5.Create();
    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strword);
    byte[] hash = md5.ComputeHash(inputBytes);
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < hash.Length; i++)
    {
        sb.Append(hash[i].ToString("x2"));
    }
    return sb.ToString();
}

1 个答案:

答案 0 :(得分:5)

为您的应用程序创建一个唯一的GUID,将其添加到您想要哈希的数据之前(在哈希之前),然后执行哈希。

它仍然是MD5哈希值,它对您的应用程序来说是唯一的。

如果您将来需要验证哈希值,请确保添加与以前相同的GUID。

    private const string _myGUID = "{C05ACA39-C810-4DD1-B138-41603713DD8A}";
    public static string ConvertStringtoMD5(string strword)
    {
        MD5 md5 = MD5.Create();
        byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(_myGUID + strword);
        byte[] hash = md5.ComputeHash(inputBytes);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < hash.Length; i++)
        {
            sb.Append(hash[i].ToString("x2"));
        }
        return sb.ToString();
    }