如何在内存中压缩并加密ZIP

  项目中遇到了一个问题,考虑到安全原因,需要将文件以二进制数据的方式打包成压缩文件,并且这个压缩文件是有密码的。

去Google上找了些API,下载来看了下,琢磨出了以下方法

  首先放API:

<!-- https://mvnrepository.com/artifact/de.idyl/winzipaes -->
        <dependency>
            <groupId>de.idyl</groupId>
            <artifactId>winzipaes</artifactId>
            <version>1.0.1</version>
        </dependency>

用了API后代码很简单,将一个二进制输入流塞进去,再输出成二进制流即可

    public static byte[] compressBytes(byte[] bytes, String entryName,
        String passWord) {
        ByteArrayOutputStream bout = null;
        ByteArrayInputStream bin = null;
        try {
            //二进制数组输出流
            bout = new ByteArrayOutputStream();
            bin = new ByteArrayInputStream(bytes.clone());
            AesZipFileEncrypter encrypter;
            encrypter = new AesZipFileEncrypter(bout, new AESEncrypterBC());
            encrypter.add(entryName, bin, passWord);
            encrypter.close();
            return bout.toByteArray();
        } catch (Exception e) {
            LOGGER.error("", e);
        } finally {
            StreamUtils.closeQuietly(bout, bin);
        }
        return null;
    }

    public static void main(String[] args) throws IOException {
        byte[] bytes = StreamUtils.read(new File("c:\\2.png"));
        StreamUtils.write(
            compressBytesInMemory(bytes, "2.png", "123456"),
            new FileOutputStream(new File("c:\\2.zip")));
    }
时间: 2024-10-25 03:24:23

如何在内存中压缩并加密ZIP的相关文章

python暴力破解加密zip文档

由参加的一个安全大赛来的.flag文件在一个加密的zip文件里面,密钥为6-8位的数字.写了个python脚本进行暴力解压缩. 运行速度还挺快,如下是运行结果:

unity开发小贴士之八 Audio使用心得

1. AudioSource pitch 倍速播放 默认=1 战斗有2倍速 3倍速 对应的 技能音效也有同步倍速播放的需求. 2.场景切换 背景音乐有渐变需求,借助DOTWEEN插件,需要注意的是DOFade()之前需要volume=0 audioSource.volume = 0 audioSource:DOFade(self.musicVolume,2.5) 3.背景音乐比较大,每一个文件单独命名为一个assetBundle是明智之选,在场景切换时把上一个背景音乐卸载 4.Load Type

乱谈zip、rar文件格式

作者:马健邮箱:[email protected]发布:2006.11.21最近更新:2006.11.25 目录一.目录表(TOC)与分卷(Volume)二.固实(solid)压缩方式三.安全性四.开放性五.结论 声明:本文并非学术论文,所述内容仅为我个人的看法和体会,不具任何权威性,仅供有兴趣的人参考,但是如果您不具有足够的鉴别能力,建议勿看,以免误导. 一.目录表(TOC)与分卷(Volume) 抛开压缩算法不谈,我认为zip.rar在文件格式上最大的差异就在目录表(Table of Con

关于cocos2dx手游lua文件加密的解决方案

很多使用cocos2dx+lua做游戏的同学,都会想到一个问题,我的游戏一旦发布,怎样才能保证的我脚本代码不被破解,不泄露代码.虽然这和开源.共享的原则不合,但是代码也是coder的劳动成果,理应得到保护.特别是商业游戏更是如此,不希望被别人破解掉源码并且进行修改. 今天的话题就是如何实现lua脚本文件的加密和解密. 我在网络上查过,解决方案http://www.ijiami.cn/appprotect_mobile_games然后我经过考虑之后,总结出两种解决方案,供大家参考. 1.轻量级的解

关于cocos2dx手游lua文件加密的解决方式

非常多使用cocos2dx+lua做游戏的同学.都会想到一个问题,我的游戏一旦公布,如何才干保证的我脚本代码不被破解.不泄露代码.尽管这和开源.共享的原则不合.可是代码也是coder的劳动成果,理应得到保护. 特别是商业游戏更是如此,不希望被别人破解掉源代码而且进行改动. 今天的话题就是怎样实现lua脚本文件的加密和解密. 我在网络上查过,都没有成熟的解决方式.然后我经过考虑之后,总结出两种解决方式,供大家參考. 1.轻量级的解决方式.APK打包之前,用工具把全部的lua文件加密,详细是将lua

自动化测试第八节---base64、zip方法、异常处理、接口签名、网络编程

1.base64加密 import base64s='1234'new_s = base64.b64encode(s.encode())#加密print('加密完的',new_s)old_s = base64.b64decode(new_s.decode()).decode() #解密回来的print('解密回来的',old_s) def bs64_data_encode(st): '''这个函数是用来base64加密的''' salt='12345' new_str = str(st)+sal

C#一个字符串的加密与解密

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.IO;   namespace ConsoleApplication1 {     class Program     {         static string encryptKey = "Oyea";    //

游戏客户端内存防修改浅析

但凡现在有点人气的游戏都可能被hack,而且网上有很多方便的工具可以使用,单就手机端还讲,最常见的内存修改器有八门神器.烧饼修改器.最近针对这两种内存修改器做了些防护处理,简单记录一下.当然道高一尺,魔高一丈,这里的处理也只是一定程度上的防作弊,最好的办法还是要做服务端校验. 1. 对内存数据进行加密处理 即在存储的时候事实上存储的是加密数据,而在读取时再做解密处理.这样的话,修改器便无法定位数据,也就无法修改或锁定该内存数据.但是,这可能会带来游戏性能的下降,加解密过程毕竟还是有效率问题的.所

Java内存回收机制(转)

引言 Java的堆是一个运行时数据区,类的实例(对象)从中分配空间.Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new.newarray.anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放.一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JVM在实现的时候都有一个由垃圾回收所管理的堆.垃圾回收是一种动态存储管理技术,它自动地释放不再被