如何从javascript客户端验证azure blob存储md5哈希?
用户可以通过my web API服务将文件上载到Azure blob存储。这些blob有MD5散列 现在,另一个API允许用户下载以前上传的文件。 API返回:如何从javascript客户端验证azure blob存储md5哈希?,javascript,md5,azure-storage-blobs,Javascript,Md5,Azure Storage Blobs,用户可以通过my web API服务将文件上载到Azure blob存储。这些blob有MD5散列 现在,另一个API允许用户下载以前上传的文件。 API返回: return File(blobFile, MediaTypeNames.Application.Octet, file.FileName); 因此javascript客户端接收一个带有头的字节数组 内容类型:应用程序/八位字节流 问题是js客户端如何验证下载文件的MD5是否与blob中的MD5匹配 我尝试了一些在线MD5工具,但他们
return File(blobFile, MediaTypeNames.Application.Octet, file.FileName);
因此javascript客户端接收一个带有头的字节数组
内容类型:应用程序/八位字节流
问题是js客户端如何验证下载文件的MD5是否与blob中的MD5匹配
我尝试了一些在线MD5工具,但他们没有给我和blob相同的MD5
我尝试了一些在线MD5工具,但它们没有给我与blob相同的MD5
在线MD5与blob MD5散列有不同的算法
下面的示例显示了一旦检索到所有数据,客户机将如何运行
// 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);
if (hashVal != blobRef.Properties.ContentMD5)
{
throw new InvalidDataException("MD5 Mismatch, Data is corrupted!");
}
此外,当您将blob上载到存储器时,如果将参数设置为true,它将为blob的每个块计算MD5哈希
存储服务检查已到达的内容的散列和已发送的散列。如果使用http而不是https,这对于检测线路上的位翻转非常有价值,因为https(默认)已经可以验证。请注意,此MD5哈希不是与blob一起存储的
我尝试了一些在线MD5工具,但它们没有给我与blob相同的MD5
在线MD5与blob MD5散列有不同的算法
下面的示例显示了一旦检索到所有数据,客户机将如何运行
// 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);
if (hashVal != blobRef.Properties.ContentMD5)
{
throw new InvalidDataException("MD5 Mismatch, Data is corrupted!");
}
此外,当您将blob上载到存储器时,如果将参数设置为true,它将为blob的每个块计算MD5哈希
存储服务检查已到达的内容的散列和已发送的散列。如果使用http而不是https,这对于检测线路上的位翻转非常有价值,因为https(默认)已经可以验证。请注意,此MD5哈希不是与blob一起存储的