第一种方式:
通过反射使用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; }
第二种方式:
使用commons-codec.jar
参考org.apache.commons.codec.binary.Base64
下载地址:http://commons.apache.org/codec/download_codec.cgi
/** * 将二进制数据编码为BASE64字符串 * @param binaryData * @return */ public static String encode(byte[] binaryData) { try { return new String(Base64.encodeBase64(binaryData), "UTF-8"); } catch (UnsupportedEncodingException e) { return null; } } /** * 将BASE64字符串恢复为二进制数据 * @param base64String * @return */ public static byte[] decode(String base64String) { try { return Base64.decodeBase64(base64String.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { return null; } }
第三种方式:
/** * 编码 * @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; }
推荐用第二种方式,所需要的jar包已经放在了下面的附件中