#tree-hash #aws #glacier

aws-tree-hash

根据AWS S3 Glacier开发者指南中的校验和计算页面所述,计算Amazon SHA256树哈希。

1个不稳定版本

0.1.1 2022年12月26日

#1378算法

MIT/Apache

14KB
172

aws-tree-hash

计算AWS树哈希的库

用法

单请求上传

use hex::FromHex;

fn main() {
    assert_eq!(
        aws_tree_hash::calculate_tree_hash(&[0; 7680000]),
        Vec::from_hex("7a43777ddc7a0326d36b15bc482e6c7736e1c2e9d80a647e8c301646f6a4785c").unwrap()
    );
}

多部分上传

use hex::FromHex;

fn main() {
    let data = &[0u8; 7680000];
    let tree_hash_1 = aws_tree_hash::calculate_tree_hash(&data[..2097152]);
    let tree_hash_2 = aws_tree_hash::calculate_tree_hash(&data[2097152..4194304]);
    let tree_hash_3 = aws_tree_hash::calculate_tree_hash(&data[4194304..6291456]);
    let tree_hash_4 = aws_tree_hash::calculate_tree_hash(&data[6291456..]);
    
    let res = aws_tree_hash::combine_hashes(vec![tree_hash_1, tree_hash_2, tree_hash_3, tree_hash_4]);
    
    assert_eq!(
        res,
        Vec::from_hex("7a43777ddc7a0326d36b15bc482e6c7736e1c2e9d80a647e8c301646f6a4785c")
            .unwrap()
    );
}

测试

可以通过运行 just src_other/start 获取仅包含null字符的7.7 MB文件的树哈希。计算使用Amazon提供的示例算法执行。

许可证

此作品根据MIT或Apache 2.0许可证授权。

SPDX-许可证-标识符: MIT Apache-2.0

依赖

~430KB