本发明属于数据安全领域,具体涉及一种Android平台的文件快速加密以及解密方法。
背景技术:
目前移动办公系统极大地提升了企、事业单位的工作效率,而带装有办公应用的智能设备中会存储一些较高机密性的文件及重要有关于商业信息的照片。而这些智能设备一旦丢失或者被有心人士通过各种手段窃取到文件,使文件外流处于不安全状态,一旦被不道德者利用就会给使用者带来极大的困难。因此,现有技术提出一些关于对文件进行加密的方法,虽然能够保证文件的隐秘性或保密性,但是它们的加密方式较为复杂,且大文件耗时较长,所以迫切的需要一种更快速且安全的加密解密方法。
技术实现要素:
要解决的技术问题
本发明针对现有技术的不足,提供了一种Android平台的文件快速加密以及解密方法,能够有效解决现有技术加密文件效率低下问题。
为解决以上问题,本发明采用的技术方案如下:
一种Android平台的文件快速加密以及解密方法,该加密方法包括加密步骤和解密步骤,其特征在于,其中所述加密步骤包括:
a) 将待加密文件数据读取为二进制字节流;
b) 将二进制流数据随机分成若干个不等份,并依次存储在一个内存数组中,其中所分成不等份大于100小于8M;
c) 以多线程多任务的方式加密二进制数据流,通过AES加密算法执行加密过程;
d) 存储加密后的二进制数据流,文件名为原文件名+序号。
所述解密步骤包括:
a) 读取待解密文件所有的加密文件,并依次存储在一个内存数组中;
b) 以多线程多任务方式读取待解密文件数据流;
c) 组合二进制数据流;
d) 还原文件的二进制数据流,生成解密文件。
有益效果
本发明技术方案通过拆分文件数据,并对每段数据进行加密,再对拆分的文件的分段加密后的数据标识,并分开存储,从而不仅达到加密文件的目的,而且还使操作原理更简单、使用更方便。
附图说明
图1加密流程图;
图2 解密流程图。
具体实施方式
下面根据附图和实施例对本发明作进一步详细说明。
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明实施例进行详细的描述。
本发明实施例提供了一种文件加密方法,该加密方法包括加密步骤和解密步骤。
其中如图1所示,所述加密步骤包括:
a) 将待加密文件数据读取为二进制字节流;
动态开劈一段新的存储空间,使用Android平台API接口将文件数据读取为二进制字节流byte后存储在存储空间内;
b) 将二进制流数据随机分成若干数据包,并依次存储在一个内存数组中,其中每份小于8M,拆分后数据包个数计算公式为:
int fileNum= Math.ceil(原文件长度/size) + 1,其中size=1024或size=2048或size=4096或size=8192。
最后一个数据包里数据长度计算公式为:
int lastSize = (int) (原文件长度 - (fileNum-1)*size);
c) 以多线程多任务的方式加密拆分后的数据包,调用AES加密算法执行加密过程;
d) 保存加密后的数据包到指定文件,文件名为原文件名+序号。
其中如图2所示,所述解密步骤包括:
a) 读取待解密文件所有的加密数据包,获取数据包序列;
b) 以多线程多任务方式解密数据包;
c) 根据数据包序列组合数据包,生成解密文件。
由于每个数据包的长度是确定的,所以文件在加密解密时可以使用多任务多线程方式来加快处理速度,具体技术细节 如下:
a) 线程池中工作线程数取8*CPU核心数;
b) 每个任务只能处理一个数据包的加密或解密工作;
c) 工作线程每次从任务池取一个任务进行处理,并根据数据包的序列,加密时将处理结果写到指定文件,解密时写到输出文件相应位置;
d) 当一个任务完成后将返还工作线程到线程池,且任务销毁;
有剩余未处理的任务且工作线程数小于最大线程数时,可以创建新的工作线程继续处理待处理的任务。
以上所述仅为本发明创造的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。