したがって、同じ手法を使用して同じテキストの 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();
}
md5sum.exe がある UNIX ベースの OS を実行しているサーバーがあります。私のサーバーには、次のような単純なファイルがあります。
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 を一致させることができないようです。何か案は?