Skip to content

Latest commit

 

History

History
30 lines (18 loc) · 1.16 KB

README.md

File metadata and controls

30 lines (18 loc) · 1.16 KB

描述

上传大文件(最高支持20G)至企业微信的微盘,需要开发者在本地对大文件进行分块以及计算分块的累积sha值(签名)。

分块的累积sha值计算过程如下:

  • 将要上传的文件内容,按2M分块;
  • 对每一个分块,依次sha1_update;
  • 每次update,记录当前的state,转成16进制,作为当前块累积sha值
  • 当为最后一块(可能小于2M),update完再sha1_final得到的sha1值(即整个文件的sha1),作为最后一块累积sha值

以上过程得到的sha值,保持顺序依次放到数组,作为file_upload_init接口的block_sha参数输入。

使用

sha1.* 可直接替换成其他sha1的实现,如openssl sha1。

linux下执行以下命令,生成 test_file_block_digest 二进制工具

aclocal

automake --add-missing

./configure CXX=g++ CPPFLAGS=-std=c++11

make

或直接使用g++编译得到 test_file_block_digest 二进制工具

g++ -std=c++11 file_block_digest.h file_block_digest.cpp sha1.h sha1.cpp test_file_block_digest.cpp -o test_file_block_digest