【发布时间】:2014-01-29 18:05:32
【问题描述】:
所以,我有一个文本文件存储在二进制(16)字段中,该字段已使用以下代码转换为 MD5 哈希:
public static byte[] GetHash(string inputString)
{
HashAlgorithm algorithm = MD5.Create(); // SHA1.Create()
return algorithm.ComputeHash(Encoding.UTF8.GetBytes(inputString));
}
好的,因此出于演示目的,此哈希为 12345678 - 我将其插入数据库,然后处理完全相同的文件。同样,创建相同的 12345678 字节数组,通过从数据库中选择哈希字段来确认:
SELECT HashValue from table
这会返回 12345678 两次,这很好。
但是,当我将此哈希值存储在 c# 中的 byte[] 中时,情况就完全不同了
任何原因,因为我在 c# 中的 sql 语句返回 12345678(在 SQL 跟踪中查看)
更新
好的,在@jakebower 之后,我创建了这个方法,并传递了由 c# 生成的当前哈希和从 SQL 中检索到的哈希,并且两个字符串都是相同的。
public static string GetHashString(string inputString)
{
var sb = new StringBuilder();
foreach (var b in GetHash(inputString))
sb.Append(b.ToString("X2"));
return sb.ToString();
}
检查这两个值是否是确保值相同的合法测试?
【问题讨论】: