晚上好,
我一直在使用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;
以下是hello.mp2的3个单独运行的结果:
1401401571161052548110297623915056204169177
16724366215610475211823021169211793421
56154777074212779619017828183239971
相当令人费解.
关于为什么我得到这些结果的唯一理性思考是将字节连接到字符串.
谁能在这里发现问题?
问候,
里克
解决方法
你应该使用
System.Security.Cryptography.MD5.
HMACMD5 is a type of keyed hash
algorithm that is constructed from the
MD5 hash function and used as a
Hash-based Message Authentication Code
(HMAC). The HMAC process mixes a
secret key with the message data,
hashes the result with the hash
function,mixes that hash value with
the secret key again,then applies the
hash function a second time. The
output hash will be 128 bits in length