晚上好,
我一直在使用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密钥,因此代表您随机生成一个密钥,并使您看到不同的结果.
| 归档时间: |
|
| 查看次数: |
2535 次 |
| 最近记录: |