加密数据的格式

来自典枢
Andrew Parno讨论 | 贡献2022年1月27日 (四) 04:18的版本 (创建页面,内容为“加密数据的格式如下 header block_info block_info .... block_info block block ... block (这里需要改成图) 其中,header的格式如下: struct header{ uint64_t magic_number; uint64_t version_number; uint64_t block_number; uint64_t item_number; }; block_info 有多个,默认为1024*1024个,block_info的格式如下 struct block_info{ uint64_t start_item_index; uint64_t…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

加密数据的格式如下

   header block_info block_info .... block_info block block ... block  (这里需要改成图)

其中,header的格式如下:

   struct header{
       uint64_t magic_number;
       uint64_t version_number;
       uint64_t block_number;
       uint64_t item_number;
   };

block_info 有多个,默认为1024*1024个,block_info的格式如下

   struct block_info{
       uint64_t start_item_index;
       uint64_t end_item_index;
       long int start_file_pos;
       long int end_file_pos;
   };

block有多个,具体的格式由item本身决定,block的大小上限为256 * max_item_size,目前,max_item_size的大小为64KB。

以上可知,一个加密文件最小需要大于32M。

加密文件是对于每个item进行加密,假设一个item的长度为item_size,则加密后的长度为 item_size + 581。

综上,加密后的文件大小相比于原始文件大小会略有增长。

典枢能够支持的原始数据的大小最多可以达到16TB,数据条数最多支持到300亿条。