繁体   English   中英

Deflater使(加密的)byte []更大

[英]Deflater makes (encrypted) byte[] bigger

我有大约900万个字节的byte [],我想将其存储到文件中。 我想使用Deflater压缩数组,但似乎该过程只会使数组(略大)。 我的数据不可压缩吗? 如果是这样,为什么? 还有其他方法可以使数组更小吗?

我的代码:

    ByteArrayOutputStream baos = null;
    Deflater dfl = new Deflater();
    dfl.setLevel(Deflater.BEST_COMPRESSION);
    dfl.setInput(data);
    dfl.finish();
    baos = new ByteArrayOutputStream();
    byte[] tmp = new byte[1024];
    try{
        while(!dfl.finished()){
            int size = dfl.deflate(tmp);
            baos.write(tmp, 0, size);
        }
    } catch (Exception ex){

    } finally {
        try{
            if(baos != null) baos.close();
        } catch(Exception ex){}
    }

    Log.d(TAG, data.length + " " + baos.toByteArray().length);
    return baos.toByteArray();

编辑:

我将磁盘上的图像转换为字节数组。 然后,我对其进行了加密。 现在,我想将该(加密的)byte []存储在文件中,以便以后可以读取并解密它,从而重新创建映像。 原始图像约为0.6MB,加密文件约为9MB。为用户着想,我想避免这么大的差异。

加密的数据应该表现得像随机噪声。 随机噪声是不可压缩的。 我建议您先压缩,然后再加密。

现在,如果图像采用压缩格式(例如jpeg),则进一步压缩可能无济于事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM