在Azure上上传的Blob的MD5哈希与本地计算机上的相同文件不匹配

Sal*_*man 6 c# hash md5 azure azure-storage

我目前正在上载Azure Blob存储上的媒体。一切正常,除非当我尝试将上传媒体的MD5哈希与本地文件(与上传的文件完全相同)时。本地文件返回一个字节数组,其中blob.Properties.ContentMD5返回一个字符串,并且两者都不匹配。

本地MD5哈希: sÔ(F¦“” Db〜[N

blob.Properties.ContentMD5: c9QoHkamgiKTRANifltOGQ ==

有什么办法可以匹配这两个?

ast*_*kov 8

这是一篇有关如何计算和检查Blob MD5校验和的好文章

我以前已经遇到过这个问题,我不知道为什么,但是你不能这样做md5.computeHash(fileBytes)。对于Azure Blob,它使用以下路径来获取哈希值:

// Validate MD5 Value
var md5Check = System.Security.Cryptography.MD5.Create();
md5Check.TransformBlock(retrievedBuffer, 0, retrievedBuffer.Length, null, 0);     
md5Check.TransformFinalBlock(new byte[0], 0, 0);

// Get Hash Value
byte[] hashBytes = md5Check.Hash;
string hashVal = Convert.ToBase64String(hashBytes);
Run Code Online (Sandbox Code Playgroud)

而且有效...

是的,正如Guarav已经提到的-MD5哈希保存为base64字符串。

  • 使用较新的“MD5.ComputeHash(Stream stream)”的较短版本的代码示例可以在 http://stackoverflow.com/a/43647643/411428 找到 (2认同)