我想如果我使用默认的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();
}
答案 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();
}