import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import android.util.Base64;
public class EncryptUtil {
private static final int BUFFER_SIZE = 1024;
* BASE64 加密
* @param str
* @return
public static String encryptBASE64(String str) {
if (str == null || str.length() == 0) {
return null;
try {
byte[] encode = str.getBytes("UTF-8");
// base64 加密
return new String(Base64.encode(encode, 0, encode.length, Base64.DEFAULT), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
* BASE64 解密
* @param str
* @return
public static String decryptBASE64(String str) {
if (str == null || str.length() == 0) {
return null;
try {
byte[] encode = str.getBytes("UTF-8");
// base64 解密
return new String(Base64.decode(encode, 0, encode.length, Base64.DEFAULT), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
* GZIP 加密
* @param str
* @return
public static byte[] encryptGZIP(String str) {
if (str == null || str.length() == 0) {
return null;
try {
// gzip压缩
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(baos);
gzip.write(str.getBytes("UTF-8"));
gzip.close();
byte[] encode = baos.toByteArray();
baos.flush();
baos.close();
// base64 加密
return encode;
// return new String(encode, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return null;
* GZIP 解密
* @param str
* @return
public static String decryptGZIP(String str) {
if (str == null || str.length() == 0) {
return null;
try {
byte[] decode = str.getBytes("UTF-8");
//gzip 解压缩
ByteArrayInputStream bais = new ByteArrayInputStream(decode);
GZIPInputStream gzip = new GZIPInputStream(bais);
byte[] buf = new byte[BUFFER_SIZE];
int len = 0;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len=gzip.read(buf, 0, BUFFER_SIZE))!=-1){
baos.write(buf, 0, len);
gzip.close();
baos.flush();
decode = baos.toByteArray();
baos.close();
return new String(decode, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return null;
* 十六进制字符串 转换为 byte[]
* @param hexString
* the hex string
* @return byte[]
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
return d;
* Convert char to byte
* @param c
* char
* @return byte
private static byte charToByte(char c) {
return (byte) "0123456789abcdef".indexOf(c);
// return (byte) "0123456789ABCDEF".indexOf(c);
* byte[] 转换为 十六进制字符串
* @param src
* @return
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
stringBuilder.append(hv);
return stringBuilder.toString();
import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.zip.GZIPInputStream;import java.ut
文章目录背景加
解密
AESRSAMD5SHA加
解密
中用到的工具类项目地址
最近在项目中需要使用到AES、RSA、MD5、SHA的加
解密
,整理了工具类,放出来记录一下,完整的源码已经放到github上。
* AES 工具类
public class AESUtil {
private final static String SHA1PRNG = "SHA...
GZip
作为常用类,进行数据的加压缩是没问题的。
如果在把压缩后的字节数据进行
Base64
的encode,传输后再进行
Base64
的decode,然后再解压,不同手机出现了不同的异常
java.util.zip.ZipException: invalid distance too far back
复制代码IOException
复制代码后来也不确定是什么问题,
Base64
换成了common-co...
var strData = atob(b64Data);
// Convert binary string to character-number array
var charData = strData.split('').map(function (x) {
return x.charCodeAt(0);
// Turn number array into byte-array
var binData = new Uin
gzip
是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。
HTTP协议上的
GZIP
编码是一种用来改进WEB应用程序性能的技术。一般服务器中都安装有这个功能模块的,服务器端不需做改动。
当浏览器支持
gzip
格式的时候, 服务器端会传输
gzip
格式的数据。
从Http 技术细节上讲,就是 http request 头中 有 “Accept-Encoding”, “
gzip
” ,response 中就有返回头Content-Encoding=
gzip
我们现在从浏览器上访问玩啥网站都是
gzip
格式传输的。
但是我们现在
Android
客户端,没有用
Android
App中进行网络请求,我们都司空见惯。那么进行http请求时可以进行压缩请求,你造么。。。简介HTTP定义了一些标准的内容编码类型,并允许用扩展的形式添加更多的编码。
Content-Encoding header 就用这些标准化的代号来说明编码时使用的算法
Content-Encoding值
gzip
表明实体采用GNU zip编码
compress 表明
快给毕老师唱一个:
MyBatis 3.3.1 批量插入多行回写自增id
CarlaF: