方式一:使用commons-codec.jar
/** * @param bytes * @return */ public static byte[] decode(final byte[] bytes) { return Base64.decodeBase64(bytes); } /** * 二进制数据编码为BASE64字符串 * * @param bytes * @return * @throws Exception */ public static String encode(final byte[] bytes) { return new String(Base64.encodeBase64(bytes)); }测试:
String base64String = "whuang123"; byte[] result = Base64.encodeBase64(base64String.getBytes());
方式二:通过反射使用java 中不对外公开的类
/*** * 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; }
方式三:使用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; }
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); } }运行结果:
参考:
http://hw1287789687.iteye.com/blog/1971297
http://hw1287789687.iteye.com/blog/1910853