Android gzip、base64 加密、解密

  1. import java.io.ByteArrayInputStream;  
  2. import java.io.ByteArrayOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.UnsupportedEncodingException;  
  5. import java.util.zip.GZIPInputStream;  
  6. import java.util.zip.GZIPOutputStream;  
  7. import android.util.Base64;  
  8.   
  9. public class EncryptUtil {  
  10.       
  11.     private static final int BUFFER_SIZE = 1024;  
  12.   
  13.     /** 
  14.      * BASE64 加密 
  15.      * @param str 
  16.      * @return 
  17.      */  
  18.     public static  String encryptBASE64(String str) {  
  19.         if (str == null || str.length() == 0) {  
  20.             return null;  
  21.         }  
  22.         try {  
  23.             byte[] encode = str.getBytes("UTF-8");  
  24.             // base64 加密  
  25.             return new String(Base64.encode(encode, 0, encode.length, Base64.DEFAULT), "UTF-8");  
  26.   
  27.         } catch (UnsupportedEncodingException e) {  
  28.             e.printStackTrace();  
  29.         }  
  30.   
  31.         return null;  
  32.     }  
  33.       
  34.     /** 
  35.      * BASE64 解密 
  36.      * @param str 
  37.      * @return 
  38.      */  
  39.     public static  String decryptBASE64(String str) {  
  40.         if (str == null || str.length() == 0) {  
  41.             return null;  
  42.         }  
  43.         try {  
  44.             byte[] encode = str.getBytes("UTF-8");  
  45.             // base64 解密  
  46.             return new String(Base64.decode(encode, 0, encode.length, Base64.DEFAULT), "UTF-8");  
  47.   
  48.         } catch (UnsupportedEncodingException e) {  
  49.             e.printStackTrace();  
  50.         }  
  51.   
  52.         return null;  
  53.     }  
  54.       
  55.     /** 
  56.      * GZIP 加密 
  57.      *  
  58.      * @param str 
  59.      * @return 
  60.      */  
  61.     public static  byte[] encryptGZIP(String str) {  
  62.         if (str == null || str.length() == 0) {  
  63.             return null;  
  64.         }  
  65.   
  66.         try {  
  67.             // gzip压缩  
  68.             ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  69.             GZIPOutputStream gzip = new GZIPOutputStream(baos);  
  70.             gzip.write(str.getBytes("UTF-8"));  
  71.   
  72.             gzip.close();  
  73.   
  74.             byte[] encode = baos.toByteArray();  
  75.   
  76.             baos.flush();  
  77.             baos.close();  
  78.   
  79.             // base64 加密  
  80.             return encode;  
  81. //          return new String(encode, "UTF-8");  
  82.   
  83.         } catch (UnsupportedEncodingException e) {  
  84.             e.printStackTrace();  
  85.         } catch (IOException e) {  
  86.             e.printStackTrace();  
  87.         }  
  88.   
  89.         return null;  
  90.     }  
  91.       
  92.     /** 
  93.      * GZIP 解密 
  94.      *  
  95.      * @param str 
  96.      * @return 
  97.      */  
  98.     public static  String decryptGZIP(String str) {  
  99.         if (str == null || str.length() == 0) {  
  100.             return null;  
  101.         }  
  102.   
  103.         try {  
  104.               
  105.             byte[] decode = str.getBytes("UTF-8");  
  106.               
  107.             //gzip 解压缩  
  108.             ByteArrayInputStream bais = new ByteArrayInputStream(decode);  
  109.             GZIPInputStream gzip = new GZIPInputStream(bais);  
  110.   
  111.             byte[] buf = new byte[BUFFER_SIZE];  
  112.             int len = 0;  
  113.               
  114.             ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  115.               
  116.             while((len=gzip.read(buf, 0, BUFFER_SIZE))!=-1){  
  117.                  baos.write(buf, 0, len);  
  118.             }  
  119.             gzip.close();  
  120.             baos.flush();  
  121.               
  122.             decode = baos.toByteArray();  
  123.               
  124.             baos.close();  
  125.   
  126.             return new String(decode, "UTF-8");  
  127.   
  128.         } catch (UnsupportedEncodingException e) {  
  129.             e.printStackTrace();  
  130.         } catch (IOException e) {  
  131.             e.printStackTrace();  
  132.         }  
  133.   
  134.         return null;  
  135.     }  
  136.       
  137.     /** 
  138.      * 十六进制字符串 转换为 byte[] 
  139.      *  
  140.      * @param hexString 
  141.      *            the hex string 
  142.      * @return byte[] 
  143.      */  
  144.     public static byte[] hexStringToBytes(String hexString) {  
  145.         if (hexString == null || hexString.equals("")) {  
  146.             return null;  
  147.         }  
  148.         int length = hexString.length() / 2;  
  149.         char[] hexChars = hexString.toCharArray();  
  150.         byte[] d = new byte[length];  
  151.         for (int i = 0; i < length; i++) {  
  152.             int pos = i * 2;  
  153.             d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));  
  154.         }  
  155.         return d;  
  156.     }  
  157.   
  158.     /** 
  159.      * Convert char to byte 
  160.      *  
  161.      * @param c 
  162.      *            char 
  163.      * @return byte 
  164.      */  
  165.     private static byte charToByte(char c) {  
  166.         return (byte"0123456789abcdef".indexOf(c);  
  167.         // return (byte) "0123456789ABCDEF".indexOf(c);  
  168.     }  
  169.   
  170.     /** 
  171.      * byte[] 转换为 十六进制字符串 
  172.      *  
  173.      * @param src 
  174.      * @return 
  175.      */  
  176.     public static String bytesToHexString(byte[] src) {  
  177.         StringBuilder stringBuilder = new StringBuilder("");  
  178.   
  179.         if (src == null || src.length <= 0) {  
  180.             return null;  
  181.         }  
  182.   
  183.         for (int i = 0; i < src.length; i++) {  
  184.             int v = src[i] & 0xFF;  
  185.             String hv = Integer.toHexString(v);  
  186.             if (hv.length() < 2) {  
  187.                 stringBuilder.append(0);  
  188.             }  
  189.             stringBuilder.append(hv);  
  190.         }  
  191.         return stringBuilder.toString();  
  192.     }  
  193. }  

你可能感兴趣的:(加密,压缩,解密,base64,StringBuilder)