源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java字符串压缩解压示例

  • 时间:2021-02-24 15:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java字符串压缩解压示例
我测试的字符串是JQuery源码。 明文长度:78082 压缩后:26566 加密长度:54746 再压缩:41647 ----------------------------- 密文长度:41647 解压缩:54746 解密后:26566 再解压:78082 ----------------------------- 比对成功 Des需要Jar:sun.misc.BASE64Decoder.jar Test
[u]复制代码[/u] 代码如下:
public static void main(String[] args) throws Exception {   String cont = "";   String cont2=jm(yjy(cont));   if(cont.equals(cont2)){    System.out.println("比对成功");   }else{    System.out.println("比对失败");   }  }  public static String yjy(String cont) throws Exception {   System.out.println("明文长度:" + cont.length());   // 第一次压缩   cont = ZipUtil2.compress(cont);   System.out.println("压缩后:" + cont.length());   // 第一次加密   cont = DesUtil.encrypt(cont, DesUtil.PWD_KEY);   System.out.println("加密长度:" + cont.length());   // 第二次压缩   cont = ZipUtil2.compress(cont);   System.out.println("再压缩:" + cont.length());   return cont;  }  public static String jm(String cont) throws Exception {   System.out.println("-----------------------------");   System.out.println("密文长度:" + cont.length());   // 第一次解压缩   cont = ZipUtil2.uncompress(cont);   System.out.println("解压缩:" + cont.length());   // 第一次解密   cont = DesUtil.decrypt(cont, DesUtil.PWD_KEY);   System.out.println("解密后:" + cont.length());   // 第二次解压缩   cont = ZipUtil2.uncompress(cont);   System.out.println("再解压:" + cont.length());   return cont;  }
DesUtil
[u]复制代码[/u] 代码如下:
import java.io.IOException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import Decoder.BASE64Decoder; import Decoder.BASE64Encoder; public class DesUtil {  private final static String DES = "DES";  public final static String PWD_KEY = "MZTHPWDJM";  public final static String ID_KEY = "MZTHIDJM";  public static void main(String[] args) throws Exception {   String data = "xkajsdasdk'al;ks'dl;kasl;d";   System.err.println("加密:"+encrypt(data, PWD_KEY));   System.err.println("解密:" +decrypt(encrypt(data, PWD_KEY), PWD_KEY));  }  /**   * Description 根据键值进行加密   *   * @param data   * @param key   *            加密键byte数组   * @return   * @throws Exception   */  public static String encrypt(String data, String key) throws Exception {   byte[] bt = encrypt(data.getBytes(), key.getBytes());   String strs = new BASE64Encoder().encode(bt);   return strs;  }  /**   * Description 根据键值进行解密   *   * @param data   * @param key   *            加密键byte数组   * @return   * @throws IOException   * @throws Exception   */  public static String decrypt(String data, String key) throws IOException,    Exception {   if (data == null)    return null;   BASE64Decoder decoder = new BASE64Decoder();   byte[] buf = decoder.decodeBuffer(data);   byte[] bt = decrypt(buf, key.getBytes());   return new String(bt);  }  /**   * Description 根据键值进行加密   *   * @param data   * @param key   *            加密键byte数组   * @return   * @throws Exception   */  private static byte[] encrypt(byte[] data, byte[] key) throws Exception {   // 生成一个可信任的随机数源   SecureRandom sr = new SecureRandom();   // 从原始密钥数据创建DESKeySpec对象   DESKeySpec dks = new DESKeySpec(key);   // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);   SecretKey securekey = keyFactory.generateSecret(dks);   // Cipher对象实际完成加密操作   Cipher cipher = Cipher.getInstance(DES);   // 用密钥初始化Cipher对象   cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);   return cipher.doFinal(data);  }  /**   * Description 根据键值进行解密   *   * @param data   * @param key   *            加密键byte数组   * @return   * @throws Exception   */  private static byte[] decrypt(byte[] data, byte[] key) throws Exception {   // 生成一个可信任的随机数源   SecureRandom sr = new SecureRandom();   // 从原始密钥数据创建DESKeySpec对象   DESKeySpec dks = new DESKeySpec(key);   // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象   SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);   SecretKey securekey = keyFactory.generateSecret(dks);   // Cipher对象实际完成解密操作   Cipher cipher = Cipher.getInstance(DES);   // 用密钥初始化Cipher对象   cipher.init(Cipher.DECRYPT_MODE, securekey, sr);   return cipher.doFinal(data);  } }
ZipUtil2 .
[u]复制代码[/u] 代码如下:
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; // 将一个字符串按照zip方式压缩和解压缩   public class ZipUtil2 {  // 测试方法  public static void main(String[] args) throws IOException {   // 测试字符串   String str = "";   System.out.println("原长度:" + str.length());   System.out.println("压缩后:" + ZipUtil2.compress(str).length());   System.out     .println("解压缩:" + ZipUtil2.uncompress(ZipUtil2.compress(str)));  }  // 压缩  public static String compress(String str) throws IOException {   if (str == null || str.length() == 0) {    return str;   }   ByteArrayOutputStream out = new ByteArrayOutputStream();   GZIPOutputStream gzip = new GZIPOutputStream(out);   gzip.write(str.getBytes());   gzip.close();   return out.toString("ISO-8859-1");  }  // 解压缩  public static String uncompress(String str) throws IOException {   if (str == null || str.length() == 0) {    return str;   }   ByteArrayOutputStream out = new ByteArrayOutputStream();   ByteArrayInputStream in = new ByteArrayInputStream(     str.getBytes("ISO-8859-1"));   GZIPInputStream gunzip = new GZIPInputStream(in);   byte[] buffer = new byte[256];   int n;   while ((n = gunzip.read(buffer)) >= 0) {    out.write(buffer, 0, n);   }   // toString()使用平台默认编码,也可以显式的指定如toString("GBK")   return out.toString();  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部