C# Azure上上载的blob的MD5哈希与本地计算机上的同一文件不匹配
我目前正在Azure Blob存储上上载媒体。除了我尝试将已上载媒体的MD5哈希与本地文件(与已上载的文件完全相同)进行混合外,所有操作都正常。本地文件返回一个字节数组,其中是blob.Properties.ContentMD5返回一个字符串,但两者不匹配 本地MD5散列:sÔ(Fа)“Db~[N blob.Properties.ContentMD5:c9QoHkamgiKTRANifltOGQ== 是否有任何可能的方法来匹配这两者?了解如何计算和检查Blob MD5校验和 我以前遇到过这种情况,我不知道为什么,但你不能只做C# Azure上上载的blob的MD5哈希与本地计算机上的同一文件不匹配,c#,azure,hash,md5,azure-storage,C#,Azure,Hash,Md5,Azure Storage,我目前正在Azure Blob存储上上载媒体。除了我尝试将已上载媒体的MD5哈希与本地文件(与已上载的文件完全相同)进行混合外,所有操作都正常。本地文件返回一个字节数组,其中是blob.Properties.ContentMD5返回一个字符串,但两者不匹配 本地MD5散列:sÔ(Fа)“Db~[N blob.Properties.ContentMD5:c9QoHkamgiKTRANifltOGQ== 是否有任何可能的方法来匹配这两者?了解如何计算和检查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);
而且它是有效的
是的,正如Guarav已经提到的-MD5哈希保存为base64字符串。尝试将MD5字节数组转换为base64字符串,并查看是否匹配。它确实有效!谢谢。您的代码返回与blob.Properties.ContentMD5相同的字符串。但是,我使用相同的代码将字节数组从源文件转换为base64字符串,并且有效!使用较新的
MD5.ComputeHash(Stream)
的较短版本的代码示例可在