java base64编码的三种方式

java 中如何使用base64编码呢?

有如下三种方式:

方式一:commons-codec.jar

String base64String = "whuang123";
		byte[] result = Base64.encodeBase64(base64String.getBytes());

 

方式二:使用sun.misc.BASE64Encoder

/**
	 * 编码
	 * 
	 * @param bstr
	 * @return String
	 */
	 public static String encode(byte[] bstr) {
	 return new sun.misc.BASE64Encoder().encode(bstr);
	 }

	/**
	 * 解码
	 * 
	 * @param str
	 * @return string
	 */
	 public static byte[] decode(String str) {
	 byte[] bt = null;
	 try {
	 sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
	 bt = decoder.decodeBuffer(str);
	 } catch (IOException e) {
	 e.printStackTrace();
	 }
	
	 return bt;
	 }

 

 

方式三:使用com.sun.org.apache.xerces.internal.impl.dv.util.Base64

/***
	 * encode by Base64
	 */
	public static String encodeBase64(byte[] input) throws Exception {
		Class clazz = Class
				.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");
		Method mainMethod = clazz.getMethod("encode", byte[].class);
		mainMethod.setAccessible(true);
		Object retObj = mainMethod.invoke(null, new Object[] { input });
		return (String) retObj;
	}

	/***
	 * decode by Base64
	 */
	public static byte[] decodeBase64(String input) throws Exception {
		Class clazz = Class
				.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");
		Method mainMethod = clazz.getMethod("decode", String.class);
		mainMethod.setAccessible(true);
		Object retObj = mainMethod.invoke(null, input);
		return (byte[]) retObj;
	}

 

测试:

package com.jn.base64;

import junit.framework.Assert;

import org.apache.commons.codec.binary.Base64;

import com.common.util.SystemUtil;

public class BaseTest {
	public static void main(String[] args) throws Exception {
		String base64String = "whuang123";
		byte[] result = Base64.encodeBase64(base64String.getBytes());
		SystemUtil.printBytes(result);
		byte[] result2 = SystemUtil.encode(base64String.getBytes()).getBytes();
		System.out.println("result2:"+result2);
		byte[] result3 = SystemUtil.encodeBase64(base64String.getBytes()).getBytes();
		boolean isSuccess = SystemUtil.isSame(result, result2);
		Assert.assertEquals(true, isSuccess);
		SystemUtil.printBytes(result2);
		SystemUtil.printBytes(result3);
		System.out.println(isSuccess);
	}
}

 运行结果如下:

 

推荐使用方式一

 

com.common.util.SystemUtil 源代码见附件

展开阅读全文

没有更多推荐了,返回首页