一.前言
在互联网时代,无论文件存储在本地端还是云端,安全性问题都是不容忽略的重要考虑因素。尤其对于重要的学习资料,我们可以在存储前对其进行加密处理,并在需要时使用解密进行恢复。然而,面对大文件,比如约4GB的文件,一次性进行Hash计算及加解密似乎存在一些难题,可能导致内存溢出等问题。因此,设计一种高效的大文件Hash计算及加解密流程显得尤为重要。
二.实现
先简单了解下本文涉及的两种安全算法:
SHA-256
加密哈希函数,设计用于产生固定长度的哈希值,通常用于确保数据的完整性。分组大小为64字节。
AES/CBC/PKCS5Padding
对称密钥加密算法,被广泛用于保护数据的机密性。CBC模式使用前一个块的密文与当前块的明文进行异或操作,增强了安全性。需要一个初始化向量(IV)来加密第一个块。分组大小为16字节,不足时需要进行填充。
具体流程
本文中使用SHA-256来计算文件的Hash来确保数据的完整性,使用AES/CBC/PKCS5Padding对文件进行加解密。
对文件进行分块时,要选择合适的块大小BLOCK_SIZE,64B的倍数,本文选取2MB,选择过小&