文件加密导入导出思路,对称加密和非对称加密混合使用
前言
工作中遇到一个功能,需要导出文件包,并且导入。
具体的逻辑没什么好说,但是为了安全需要加密文件包,这时候就涉及一个加密的问题。
常见的加密有MD5,对称加密,非对称加密。
MD5主要是用来检验文件是否被篡改
对称加密速度快,但是因为加解密都是同样的秘钥,安全性来说差一点
非对称加密速度慢,但是因为公私钥分开,
可以用公钥加密,私钥解密来确保安全性,或者是私钥加密,公钥解密来确认身份。这次的功能用前面的方法。
解决方案
最开始是直接用非对称加密RSA,直接去加密文件,直接加密10MB的文件会出现卡死,显然非常不现实。
这时候解决方案其实很简单。先用对称加密AES去加密文件,然后保存加密时用的Key和Value。
将这两个导出为一个文件,因为只保存关键性秘钥信息,所以这个时候用RSA加密速度会很快。
我是用一个类保存为JSON,然后再保存为文件。
这里面还可以加个MD5的文件校验,以防止文件被篡改,不过需求不需要这么高的防伪,这里只是提一下
每个加密方法和具体逻辑就不列了,没有什么特别难的,思路有了,就是对工具类。