有奖捉虫:云通信与企业服务文档专题,速来> HOT

校验和简介

文件的校验和分为两种:线性校验和、树形校验和,用来校验请求内容的一致性。归档存储要求用户在简单上传和分块上传时,包含上传内容的校验码。服务端收到校验和的时候,会检查内容与校验和是否一致,不一致则返回失败。用户在下载档案文件时,归档存储也会返回相应的校验码,供用户校验下载数据是否一致。

线性校验和

使用 SHA256 算法,通过HTTP头部 x-cas-content-sha256传入,线性校验和表现为64位数字或者小写字母的组合
。线性校验和举例如下:
x-cas-content-sha256:24329af4a7cb3276ddf3d6b09d42452ef3cf894a30a61f999909e3c00a5344a7

树形校验和

通过HTTP头部 x-cas-sha256-tree-hash 传入,树形校验和表现为64位数字或者小写字母的组合。
树形校验和算法如下:



1. 对于文件内容的每个 1MB 区块,计算 SHA256 哈希。数据的最后一个区块可以小于 1MB。例如,如果您要上传一个 3.2MB 的档案,则您需要计算数据的前三个 1MB 区块中每一个区块的 SHA256 哈希值,然后计算剩余 0.2MB 数据的 SHA256 哈希。这些哈希值构成了树的叶节点。
2. 构建每两个叶节点的根节点。连接两个连续子节点的哈希值,然后计算连接的哈希值的 SHA256 哈希作为这两个子节点的父节点哈希值。只剩下一个子节点时,将该哈希值提升到树的下一层。
3. 重复步骤 2,直到结果树具有根为止。树根提供了整个档案文件的哈希,相应的子树根提供了分段上传中的段的哈希。

树形校验和举例如下:
x-cas-sha256-tree-hash:74a1b786020a3c68fbe7bd3048a405bf5ec4b436977d917def4f78e5319d130f

简单上传中使用检验和

在使用 Upload Archive 接口时必须上传全文件的 x-cas-sha256-tree-hashx-cas-content-sha256 。




分段上传中使用校验和

分段上传的每个段都是以1MB的2幂次为单位。
在使用 Upload Part 接口时必须上传每个Part的 x-cas-sha256-tree-hash x-cas-content-sha256。
在使用 Complete Multipart Upload 接口时必须上传全文件的 x-cas-sha256-tree-hash,用来检查数据一致性。




下载中使用校验和

Initiate Job 和 Get Job Output 请求都可以指定范围,如果两次指定范围之后,最终的连续数据段仍然构成一棵树(如下),那么服务端将返回该数据段的树形校验和,以便用户检查数据一致性。



如果最终的连续数据段无法构成一棵树,那么服务端不返回该数据段的树形校验和