支持加密二进制文件和文本文件
整个加密,解密流程,对用户是无感的,只要你正确使用了框架提供的文件读写api,是不需要关心加密,解密的。
比如,文本文件resource/mydata
, 内容如下
hello crypto!
如果你希望该文件在镜像中被加密
,则需要在项目的描述文件.ab
中定义需要加密的文件列表。如
#!/bin/bash
app_name=simple
app_version=0.0.1
# [选填] 需要加密的数据文件列表,支持正则表达式
enable_crypto=true
crypto[0]=xxxx
crypto[1]=resource/.*data
enable_encrypt_python=true
这篇文档里有详细描述。值得注意的是,如果不启用加密数据文件,即enable_crypto=false
,框架会在打包时,自动将algorithms/init.py置为空值
注意,如果希望启用数据加密,务必设置enable_crypto=true 和 enable_encrypt_python=true
在python中,使用如下方式读取该文件。打包后,镜像中的文件会被自动加密,并删除明文文件。同时,read_text
将把密文解密到内存中。
from ab.keys.data import read_text
@algorithm()
def crypto():
"""
读取加密文件
:return:
"""
return read_text("resource/mydata")
- read_text:一次性读取文本全部内容,并以字符串形式返回,默认使用utf-8的编码
- read_json:一次性读取二进制文件全部内容,并解析为json格式
- read_pickle: 一次性读取二进制文件全部内容,并解析为pickle格式
- open_text: 读取文本文件,以StringIO的形式返回
- open_binary: 读取二进制文件,以bytearray的形式返回
- 在pytorch中使用加密的模型
with open_binary(model_dir+"/torchscript/traced_bert.pt") as f:
buffer = io.BytesIO(bytes(f))
model_diagnose = torch.jit.load(buffer)
假如框架没有提供read_json方法,你希望对json格式加密读取,只需要将json文件看成是纯文本文件,使用read_text方法读取,然后自行用json.load即可。其他格式文件不赘述
不是吃饱了撑的,不用看这一节,框架开发者除外
根据.ab
文件中的配置,使用如下命令即可。-i后面是正则表达式。加密时无需传入密钥,有特殊的安全需求,可以自行实现加密,解密接口。
abt加密工具的目标是方便用户使用,该工具可以独立于框架使用,所以内置了固定的密钥。
abt crypto -i "resource.*" -c true
abt decrypto -i "resource.*" -c true