System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及对称密钥算法和文件加密,特别涉及一种基于aes的文件加密方法。
技术介绍
1、aes高级加密标准,是一种对称加密算法,算法对明文的加密和解密都使用同一个密钥,被广泛应用于各种网络安全和数据保护场景,如网络通信、文件加密等。aes加密算法的基本原理是将明文数据经过多轮加密操作,最终生成密文。加密过程主要包括字节替换、行移位、列混淆、轮密钥加四个步骤。但是,常规情况下aes仅能用于明文字符串的加密,不能用于文件加密的场景。
2、在尝试使用java通过aes算法对文件加密过程中,先将文件转为字节数组,再对字节数组进行aes加密生成新的字节数组,保存输出为加密后的文件。在使用密钥对加密文件的字节数组解密,并生成解密文件后,会发现文件无法正常打开或查看。通过与源文件进行字节对比,发现文件的字节长度发生了改变,导致了源文件损坏。
技术实现思路
1、本专利技术目的是提供一种基于aes的文件加密方法,从设计填充长度的角度,解决上述技术问题。
2、具体技术方案是一种基于aes的文件加密方法,所述方法包括:
3、s1、加密前对原始文件的字节数组进行处理,先计算源文件的初始字节长度,并将int类型的长度转为byte数组的形式,并记录长度,
4、s2、对源文件的字节数组进行扩展,新建一个字节数组,长度为原数组长度+16m,m取整数,且1≤m≤4,扩展区域包括源文件长度字节,
5、s3、使用aes对新字节数组进行加密,获得加密后的字节
6、s4、输出字节流到加密文件中,生成新文件。
7、优选地,步骤s1中,使用4n个byte记录源文件长度,1≤n≤4m,且n取整数。
8、优选地,步骤s2中,扩展区域位于原始文件字节前面。
9、优选地,新建字节数组的前4n字节保存源文件长度。
10、优选地,扩展区域后(16m-4n)字节填充0。
11、优选地,还包括解密过程:
12、s1、读取加密文件,处理为字节数组形式,
13、s2、直接使用aes解密对字节数组进行解密,生成新的字节数组,
14、s3、读取前4n字节,并转换为int类型,获取源文件字节长度,设为len,
15、s4、新建一个字节数组,长度为上面获取到的原长度len,
16、s5、从解密后的数组第16m字节开始,复制到新数组中,
17、s6、复制完成后,若新数组仍有空余位置,则进行补0操作,
18、s7、输出新的字节数组到文件中,生成解密文件。
19、优选地,步骤s1中,使用4个byte记录源文件长度;步骤s2中,新建字节数组的长度为原数组长度+16,扩展区域位于原始文件字节前面,且新建字节数组的前4字节保存源文件长度,扩展区域其余字节填充0。
20、优选地,还包括解密过程:
21、s1、读取加密文件,处理为字节数组形式,
22、s2、直接使用aes解密对字节数组进行解密,生成新的字节数组,
23、s3、读取前4字节,并转换为int类型,获取源文件字节长度,设为len,
24、s4、新建一个字节数组,长度为上面获取到的原长度len,
25、s5、从解密后的数组第16字节开始,复制到新数组中,
26、s6、复制完成后,若新数组仍有空余位置,则进行补0操作,
27、s7、输出新的字节数组到文件中,生成解密文件。
28、与现有技术相比,本专利技术有益效果如下:
29、1、通过对源文件的字节数组进行整块扩展,扩展区域在加密时长度不变,并在扩展区域中记录源文件的初始字节长度,以便于解密阶段的准确读取;
30、2、源文件的初始字节长度记录中,将int类型的长度转为byte数组的形式,保持数据处理环节中的一致性,
31、3、设计了仅添加16字节,利用前4字节记录源文件长度、其余位补0的具体方案,解决了加密过程中长度引起的文件损坏问题,
32、本申请对加密过程中的填充长度进行设计,弥补了aes算法在文件加密过程中由于对齐填充导致的加密后文件无法正常读取的问题,是一种轻量级的解决方案,提高了aes算法在文件加密场景中的适用性。
本文档来自技高网...【技术保护点】
1.一种基于AES的文件加密方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于AES的文件加密方法,其特征在于,步骤S1中,使用4n个byte记录源文件长度,1≤n≤4m,且n取整数。
3.根据权利要求2所述的基于AES的文件加密方法,其特征在于,步骤S2中,扩展区域位于原始文件字节前面。
4.根据权利要求3所述的基于AES的文件加密方法,其特征在于,新建字节数组的前4n字节保存源文件长度。
5.根据权利要求4所述的基于AES的文件加密方法,其特征在于,扩展区域后(16m-4n)字节填充0。
6.根据权利要求5所述的基于AES的文件加密方法,其特征在于,还包括解密过程:
7.根据权利要求1所述的基于AES的文件加密方法,其特征在于,步骤S1中,使用4个byte记录源文件长度;步骤S2中,新建字节数组的长度为原数组长度+16,扩展区域位于原始文件字节前面,且新建字节数组的前4字节保存源文件长度,扩展区域其余字节填充0。
8.根据权利要求7所述的基于AES的文件加密方法,其特征在于,还包括
...【技术特征摘要】
1.一种基于aes的文件加密方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于aes的文件加密方法,其特征在于,步骤s1中,使用4n个byte记录源文件长度,1≤n≤4m,且n取整数。
3.根据权利要求2所述的基于aes的文件加密方法,其特征在于,步骤s2中,扩展区域位于原始文件字节前面。
4.根据权利要求3所述的基于aes的文件加密方法,其特征在于,新建字节数组的前4n字节保存源文件长度。
5.根据权利要求4所述的基于aes的文件加密方...
【专利技术属性】
技术研发人员:杨轩,张雷,邵亮,
申请(专利权)人:青岛国实信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。