因此,我在使用相同技术比较相同文本的 MD5 总和时遇到了问题。我正在使用 .NET MD5 工具和 Unix 的 md5sum.exe 程序。
这是我的 .NET 代码:
public void Test()
{
string str1 = "testline1";
string str2 = "testline2";
StringBuilder sb = new StringBuilder();
sb.Append(str1);
sb.Append(Constants.vbLf);
sb.Append(str2);
string hash = GetMD5Hash(sb.ToString());
//hash = 4fb435ffb8e071151c3411dd3a922460
}
public string GetMD5Hash(string text)
{
byte[] hash;
using (MD5 md5 = MD5.Create())
{
hash = md5.ComputeHash(Encoding.UTF8.GetBytes(text));
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("x2"));
}
return sb.ToString();
}
我有一台运行基于 unix 的操作系统的服务器,上面有 md5sum.exe。在我的服务器上,我有一个简单的文件:
testline1
testline2
假设文件名为 testFile.txt
我尝试运行 md5sum 的多种变体,看看是否可以使这些值等于无济于事。
$md5sum testFile.txt //22f877bcf8985a0f038a5b70086b955d
$echo -n $(cat testFile.txt) | md5sum //1e192bb9877cc2f20e7010d499c0a306
$echo -E $(cat testFile.txt) | md5sum //83b6873b79ca36952eb58ea05083c02e
$unix2dos testFile.txt //converting file to dos just in case line endings are issue
$md5sum testFile.txt //d302436fa25c7faaab75ceca1f1df16d
$echo -n $(cat testFile.txt) | md5sum //94f0c8f7e9820cb6eda9e911ee21b2a8
$echo -E $(cat testFile.txt) | md5sum //f39452a70621ed225057073e86f17858
我已经为此工作了几个小时,似乎无法让这些 MD5 匹配。有任何想法吗?