1

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

所以我想以某种方式定义一个预静态值,将其提供给 MD5 函数,并使这些生成的结果使我的应用程序独一无二。

这个静态值永远不会在我的应用程序中改变,所以它总是会为我的应用程序中的相同字符串生成相同的哈希值

但是如果另一个应用程序使用默认的 MD5,他们将不会得到相同的 MD5 哈希值

我怎么能用 c# 5 做到这一点?网

我有以下功能

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();
}
4

1 回答 1

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();
    }
于 2013-04-03T13:01:43.520 回答