我可以顯示選定的兩個不同文件的兩個不同MD5值,但是SHA-1功能顯示兩個不同文件的完全相同的值。這是爲什麼?爲什麼我的SHA-1函數在C#中爲這兩個文件顯示相同的輸出?
我不是一個偉大的程序員,所以我不知道這段代碼是否特別好,但任何幫助或建議將不勝感激。
{
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
System.Security.Cryptography.SHA1 sha1 = System.Security.Cryptography.SHA1.Create();
FileStream file1 = new FileStream(lblBrowse1.Text, FileMode.Open);
FileStream file2 = new FileStream(lblBrowse2.Text, FileMode.Open);
byte[] hash1 = md5.ComputeHash(file1);
byte[] hash2 = md5.ComputeHash(file2);
byte[] hash3 = sha1.ComputeHash(file1);
byte[] hash4 = sha1.ComputeHash(file2);
file1.Close();
file2.Close();
textBox1.Text = BitConverter.ToString(hash1).Replace("-", "");
textBox2.Text = BitConverter.ToString(hash2).Replace("-", "");
textBox6.Text = BitConverter.ToString(hash3).Replace("-", "");
textBox7.Text = BitConverter.ToString(hash4).Replace("-", "");
if (textBox1.Text == textBox2.Text)
{
MessageBox.Show("These two files are identical.");
}
else
{
MessageBox.Show("These two files are different.");
}
雖然極不可能,但說匹配的散列等於匹配的數據並不是真的。哈希會發生碰撞,所以如果哈希匹配,您應該採取次要措施來確保匹配的數據。 – spender