Windows Azure Blob 存储使用指南
1. 操作成功反馈与 ETag 头
当进行操作时,首先会收到一个 2xx 消息,表明操作成功。ETag 头指定了服务器所看到的 blob 的“版本”,在后续请求中可以使用该 ETag。响应最后会包含一些标准的 HTTP 头。
2. MD5 哈希
网络传输存在不确定性,即使有 TCP、HTTP 的握手和错误检查机制,数据包仍可能损坏。为防止数据损坏,可发送内容的哈希值到接收端。接收端计算接收到数据的哈希值,并与请求中的哈希值进行比较。若数据或哈希值在传输中损坏,检查将失败,发送方会收到通知。
在 Windows Azure 存储中,使用 MD5 进行哈希计算,有两种使用方式:
- 上传 blob 时,可添加包含 blob 的 MD5 哈希值的 Content - MD5 头。blob 服务器会计算接收到数据的 MD5 哈希值,若不匹配则返回错误(BadRequest)。
- 创建或覆盖 blob 时,服务器会发送接收到数据的 MD5 哈希值,客户端可验证该哈希值是否与数据的哈希值匹配。
虽然 MD5 哈希会对性能有一定影响,但现代 CPU 计算哈希值的速度很快,建议使用 MD5 来防止网络故障。
有人认为 MD5 不安全,因为研究表明可能产生两个哈希值相同的数据(碰撞)。但在 Windows Azure 中,使用 MD5 仅用于防止网络损坏,网络故障产生 MD5 碰撞的可能性极小。Windows Azure 存储协议的安全性来自共享密钥和请求的 HMAC - SHA256,目前没有研究表明 SHA - 2 算法(SHA - 256 是其成员)会产生