上传到网盘时需要对文件进行加密,并方便下载者解密(不需要安装额外的软件)
不占用大量内存——例如 1GB 的文件拆成多个 10MB 的块,每个块就是个 block,每次处理一个 block 不必占用大量内存
流式加密——输入一个 block generator,输出一个新的 block generator ;而不需要产生临时文件,也方便串联多个加密函数轻松实现多次加密。反正 requests 进行 POST 上传操作的时候支持 data 为 generator
产生的是标准的 zip 文件格式——可以不压缩
似乎也不支持流式压缩,并没有输入一个 block 输出一个 block 的接口
我已经写出了一个:
https://github.com/zjuchenyuan/EasyLogin/blob/master/examples/panzju/encryption_example.py
def fencrypt_data(data_generator):
c = cryptor.Cryptor(ENCRYPTION_PASSWORD, ENCRYPTION_METHOD)
for data in data_generator:
yield c.encrypt(data)
ss 用的 cryptor 本身就是流式加密的,可以对每个 block 加密产生一个新的 block
只是不方便下载者解密(需要 python 和 openssl 库) 可用性低
1
julyclyde 2018-01-20 20:35:31 +08:00 1
首先,zip 不是流式而是 archive
|