解密算法
参考代码:
流程:
- 读入并解析文件头;
- 根据 密码槽(
key_slot
)的值选择一个“密码槽密钥(slot_key
)”; - 根据 加密类型(
encryption_type
)的值选择一个解密器的实现; - 初始化解密器 - 分别传入 文件密钥(
file_key
)与 密码槽密钥(slot_key
); - 根据文件偏移进行解密。
伪代码
fn decrypt_file(file):
header = parse_header(file)
decryptor = create_decryptor(header.encryption_type)
slot_key = get_slot_key(header.key_slot)
decryptor.set_slot_key(slot_key)
decryptor.set_file_key(file_key)
file.seek(header.offset_to_data, FILE_SEEK_BEGIN)
offset = 0
while not file.eof():
byte = file.read_byte()
byte = decrypt(offset, byte)
offset = offset + 1