`
lxz8157
  • 浏览: 35880 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

字符串的压缩和解压(包括加解密)

阅读更多

import com.util.IArchive;
import java.io.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import org.apache.log4j.Category;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class CompressImp implements IArchive
{

    private static Category log4j = Category.getInstance("Commonlog");

    private Category        logError;

    public CompressImp()
    {
        logError = Category.getInstance("CommonlogError");
    }

    public String compress(String sourceData)
    {
        String msg;
        msg = "ERROR";
        ByteArrayOutputStream baOS = null;
        GZIPOutputStream zipOS = null;
        try
        {
            baOS = new ByteArrayOutputStream();
            zipOS = new GZIPOutputStream(baOS);
            byte msgBt[] = sourceData.getBytes("UTF-8");
            zipOS.write(msgBt);
            zipOS.close();
            byte zipBt[] = baOS.toByteArray();
            BASE64Encoder encoder = new BASE64Encoder();
            msg = encoder.encode(zipBt);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            logError.error("压缩异常" + e.getMessage());
        }
        finally
        {
            try
            {
                baOS.close();
                zipOS.close();
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
        }
        return msg;
    }

    public String decompress(String sourceData)
    {
        String dest;
        byte msgBt[] = new byte[51200];
        dest = "ERROR";
        ByteArrayInputStream baIS = null;
        GZIPInputStream zipIS = null;
        BufferedInputStream bIS = null;
        try
        {
            BASE64Decoder decoder = new BASE64Decoder();
            byte zipBt[] = decoder.decodeBuffer(sourceData);
            baIS = new ByteArrayInputStream(zipBt);
            zipIS = new GZIPInputStream(baIS);
            bIS = new BufferedInputStream(zipIS);
            bIS.read(msgBt);
            dest = new String(msgBt, "UTF-8");
            dest = dest.trim();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            logError.error("压缩异常" + e.getMessage());
        }
        finally
        {
            try
            {
                baIS.close();
                zipIS.close();
                bIS.close();
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
        }
        return dest;
    }
}
分享到:
评论

相关推荐

    Android 加密压缩解密解压缩字符串简单DEMO

    2. **字符串压缩**: 数据压缩可以减少传输的数据量,提高效率。Android中,可以使用Gzip或者Zlib库进行压缩。Gzip是一种广泛使用的压缩格式,而Zlib则是一个更底层的库,可以用于创建gzip或者其他压缩格式的文件。...

    字符串加密解密jar包

    8. **使用场景**:字符串加密解密jar包广泛应用于各种场景,包括但不限于网络通信、移动应用、云服务、文件存储等领域,任何需要保护数据隐私和安全的地方都可能用到。 总的来说,"字符串加密解密jar包"是一个便捷...

    vue中使用 pako.js 解密 gzip加密字符串的方法

    总结来说,pako.js在Vue项目中解密gzip加密字符串是一个非常实用的技能,尤其是当我们遇到需要处理经过gzip压缩的数据时。通过上述介绍,读者可以了解到相关的概念、流程以及具体的实现方法,帮助自己在实际开发过程...

    21种VB加密算法含解密源码集.rar

    7. **压缩算法**:除了加密,资源中还包含了50多种压缩/解压算法的源码,可能包括ZIP、GZIP、BZIP2、LZMA(7-Zip所用的算法)等,这些算法用于减小文件体积,提高传输和存储效率。 8. **杂凑函数**:除了用于加密的...

    基于C语言实现的文件加密解密与压缩解压【100011224】

    核心功能就是文件的加密解密和压缩解压。虽然接口单一,但是功能实现却是很复杂。下面来详细的介绍这两块功能。 文件加密: 统计待加密源文件Fn文件中出现的字符以及其对应的频率。 将统计得到的字符数组和其对应...

    VB加密解密及压缩代码

    - 在VB中,编写加密解密和压缩解压的程序通常包括以下步骤: - 导入必要的命名空间,如`System.Security.Cryptography`和`System.IO.Compression` - 创建加密/解密或压缩/解压的逻辑,可能需要使用缓冲区处理大...

    将文件进行zip压缩并base64加密和解密

    解密时,先使用`Base64Util.decodeBase64StringToFile()`将BASE64字符串解码回ZIP文件,再使用相应的工具解压缩。 在实际开发中,这些工具类可以封装成一个完整的库,提供给其他部分代码使用。例如,你可以创建一个...

    java ZIP压缩/解压缩(同时加解密)解决方案(一)

    - `key`:用于文件解密的密钥字符串。 - `ifSubDir`:是否保留原文件结构中的子目录。 如果未提供密钥,则直接调用 `unZip` 方法进行解压;如果提供了密钥,则使用 `AesZipFileDecrypter` 类进行解密并提取文件。 ...

    Java解密加密及压缩算法实例.rar

    本资源"Java解密加密及压缩算法实例.rar"提供了一系列的示例代码,旨在帮助开发者理解和应用各种加密和压缩算法。以下是这些算法的详细介绍: 1. **加密算法**: - **AES(高级加密标准)**:AES是一种对称加密...

    rar压缩软件.rar

    在 e:\text 目录下的 rar 压缩文件中搜索十六进制字符串 f0 e0 ae ae ab 2d 83 e3 a9。 k 锁定压缩文件。任何试图改变压缩文件的命令都会被忽略。 例子: rar k final.rar l[t[a],b] 压缩文件的内容列表...

    解压加密的zip文件源码

    综上所述,解压加密的ZIP文件源码是一个包含文件头解析、密码验证、数据解密、解压缩、路径处理和文件写入等多个复杂环节的程序。对于开发人员来说,理解和实现这样的源码可以提升他们在文件处理和安全方面的专业...

    php gzip 在线压缩工具

    它只需要一个参数,即压缩的字符串,返回值是解压后的原始字符串。 3. **在线压缩工具的工作原理**:这些在线工具通常通过接收用户上传的文件,使用PHP处理这些文件,利用`gzencode()`进行压缩,然后提供下载链接。...

    文件压缩与解压实验报告 (2).pdf

    - 提供了两个字符串示例,用于测试程序的编码和解码功能。 这份实验报告展示了如何利用哈弗曼编码实现文件的压缩与解压,以及如何设计一个简单的用户界面来实现这一过程。通过理解这些知识点,我们可以了解数据...

    Huffman文件加密解密Java实现

    此外,程序还能够输出二进制文件,这意味着它可以处理大量数据,而不仅仅是文本字符串。 总的来说,这个项目涵盖了数据结构、算法和Java编程等多个方面的知识,是一个很好的实践案例,可以帮助学习者深入理解...

    下载地址加解密工具

    在这个案例中,"下载地址加解密工具+V2[1].1.exe"是压缩包内的主要程序文件,它是一个可执行文件(.exe),意味着用户可以在解压后直接运行它来使用下载地址加解密功能。 在使用这个工具时,用户可以输入原始的下载...

    HIQQ_Dev 20220825.zip

    由于没有提供更多的描述性信息,我们只能依据通用的开发实践来推测可能包含的文件类型和结构。 【标签】由于没有具体的标签信息,我们无法得知这个项目所涉及的技术栈或特性。通常,标签可能会包含如"Python", ...

    WinAsar工具文件的解压

    其实asar的文件头就是一个JSON字符串,然后他在前面记录了JSON的长度,然后他以用一个数值记录了长度的长度,然后他又用一个数值记录了长度的长度的长度。 当然,有用的数值是最后一个,取出JSON的长度再把JSON读...

    js加密、解密、编码等工具合集

    此外,还有`escape()`和`unescape()`,它们可以对字符串进行更广泛的编码和解码,包括非ASCII字符。 接下来是JavaScript的加密解密。在网络安全中,加密是保护数据隐私的重要手段。JavaScript提供了多种加密库,...

    java中重写ZipCOM方法

    对于字符串压缩,Java提供了多种实现方式,如GZIP和Deflater。`GZIPOutputStream`和`GZIPInputStream`可以用来进行GZIP压缩和解压,而`DeflaterOutputStream`和`InflaterInputStream`则对应于DEFLATE算法。我们可以...

Global site tag (gtag.js) - Google Analytics