每次C#的相同未更改文件的MD5文件哈希都不同

Ric*_*Ric 6 hash md5

晚上好,

我一直在使用C#中的MD5工具来获取文件,浏览我的Hasher类并将结果弹出数据库,以及文件名和目录.

我遇到的问题是,每次运行测试时,相同文件的MD5结果(即以任何方式保持不变)都是完全不同的.

以下是我使用的代码

HashAlgorithm hmacMd5 = new HMACMD5(); 
byte[] hash;
try
{
    using (Stream fileStream = new FileStream(fileLocation, FileMode.Open))
    {
        using (Stream bufferedStream = new BufferedStream(fileStream, 5600000))
        {
            hash = hmacMd5.ComputeHash(bufferedStream);
            foreach (byte x in hash)
            {
                md5Result += x;
            }
        }
    }
}
catch (UnauthorizedAccessException uae) { }

return md5Result;
Run Code Online (Sandbox Code Playgroud)

以下是hello.mp2的3个单独运行的结果:

1401401571161052548110297623915056204169177

16724366215610475211823021169211793421

56154777074212779619017828183239971

相当令人费解.关于为什么我得到这些结果的唯一理性思考是将字节连接到字符串.

谁能在这里发现问题?

问候,

里克

nos*_*nos 14

您应该使用System.Security.Cryptography.MD5.

HMACMD5不计算哈希值,它计算消息身份验证代码.

HMACMD5是一种键控哈希算法,它是从MD5哈希函数构造的,并用作基于哈希的消息认证码(HMAC).HMAC进程将秘密密钥与消息数据混合,用散列函数散列结果,再次将该散列值与密钥混合,然后第二次应用散列函数.输出散列的长度为128位

由于您未提供HMAC密钥,因此代表您随机生成一个密钥,并使您看到不同的结果.