Java使用对称加密算法加密大文件内存资源消耗问题
公司要求和外网合作方通信传输文件时要求除使用https以为应用层自己完成一次加密,但java层写得加密方式都需要将文件完整内容读出后再进行加密,这无疑占用内存资源是个大问题,如果文件为10MB即使加密后依然为10MB,则每个并发需要消耗20MB的内存资源(例子中的byteContent和result各占10MB),同时GC也是个较大的负担。如果我对文件进行分片处理每1MB做一次加密,则合作方也需要根据同样的分片规则对文件进行解密后再重组明文文件,这无疑是提高了接入方技术复杂度,技术接入文档也比较难描述清楚,请问有什么方式能降低单个并发线程对内存的资源消耗同时不增加接入技术的复杂度?
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
byte[] byteContent = IOUtils.toByteArray(fileInputStream);// 获取文件内容
cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化
byte[] result = cipher.doFinal(byteContent); // 对文件内容进行加密
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 CipherOutputStream