0


OSS的Etag与MD5

OSS MD5一致性校验说明

OSS上的Object会有ETag标签,ETag主要是用来判断服务端数据是否存在变化。但是ETag不一定等同于文件的MD5值,所以不建议作为校验数据一致性的依据。

如果需要校验上传到OSS的文件和本地文件是否一致,可以在上传文件时携带文件的Content-MD5值。OSS会在接收文件时,将文件的MD5值和Content-MD5进行比对,两者一致时才可以上传成功,从而保证上传数据的一致性。

PutObject

Content-MD5:
用于检查消息内容是否与发送时一致。Content-MD5是由MD5算法生成的值。上传了Content-MD5请求头后,OSS会计算消息体的Content-MD5并检查一致性。更多信息,请参见Content-MD5的计算方法。
为确保数据完整性,OSS提供多种方式对数据的MD5值进行校验。 如果需要通过Content-MD5进行MD5验证,可将Content-MD5加入到请求头中。

ETag:
Object生成时会创建相应的ETag ,ETag用于标识一个Object的内容。
对于PutObject请求创建的Object,ETag值是其内容的MD5值。
对于其他方式创建的Object,ETag值是基于一定计算规则生成的唯一值,但不是其内容的MD5值。
注意:ETag值可以用于检查Object内容是否发生变化。不建议使用ETag作为Object内容的MD5来校验数据完整性。
使用PutObject上传文件 获取的ETag就是MD5值

GetObject

请求示例

GET /link-to-oss.jpg HTTP/1.1
Accept-Encoding: identity
Date: Tue, 08 Nov 2016 03:17:58 GMT
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Authorization: OSS qn6qrrqxok53otfjbyc:qZzjF3DUtd+yK16BdhGtFc*****

返回示例

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Tue, 08 Nov 2016 03:17:58 GMT
Content-Type: application/octet-stream
Content-Length: 20
Connection: keep-alive
x-oss-request-id: 582143E6A212AD*****
Accept-Ranges: bytes
ETag: "8086265EFC021F9A2F09BF4****"
Last-Modified: Tue, 08 Nov 2016 03:17:58 GMT
x-oss-object-type: Symlink
Content-MD5: gIYmXvwCEe0fmi8Jv0Y****

使用GetObject生成Etag与Content-MD5值不一致

总结:

通过PutObject拿到ETag可以和下载后的文件本地生成MD5进行对比,可以校验文件的完整性,此时ETag和MD5是一致的.GetObject建议使用MD5校验一致性

标签: 安全 java

本文转载自: https://blog.csdn.net/Du_niu/article/details/126871719
版权归原作者 嘟嘟牛* 所有, 如有侵权,请联系我们删除。

“OSS的Etag与MD5”的评论:

还没有评论