最近做一个数据库数据的导入导出的工具,在解决了数据导入的自动表排序问题后,客户要求对传输的数据加密和解密
1. 先测试了当前的数据大小变化和加密(RSA)耗费时间:
常规导出的业务数据 在不加密的情况下才采用二进制存储大概300K左右
加密后,采用二进制存储数据膨胀到了8M左右
加密的时间稍微长了一下,正常导出需要几秒钟,现在多了几十秒。勉强可接受
2. 测试解密
对8M的数据解密,解密进程就一直处于运行状态,等了十来分钟,强制终止执行。
考虑改进策略:
1. 多线程改进,采用类似多线程下载的方式,将数据加密和解密分为多个数据块,采用多线程执行,然后将执行结果合并。
2. 因为数据导出主要是文本数据,考虑压缩后加密,在解密的时候解密后再解压缩
目前采用的方法和效果
因时间比较紧迫,且数据量不大,采用了单线程,数据压缩的方式。
单线程加密压缩后的数据的时间也不长(目前的数据压缩后加密时间不超过10秒)
单线程解密压缩后的数据时间也在10-20秒左右,比之前未压缩的效果要好很多。不过可能安全性有所降低
后续版本再考虑多线程加密和解密。