转载至:http://hw1287789687.iteye.com/blog/1910853

java 中使用base64编码和解码:

 

第一种方式:

通过反射使用java 中不对外公开的类:

Java代码  

  1. /*** 

  2.      * encode by Base64 

  3.      */  

  4.     public static String encodeBase64(byte[]input) throws Exception{  

  5.         Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");  

  6.         Method mainMethod= clazz.getMethod("encode"byte[].class);  

  7.         mainMethod.setAccessible(true);  

  8.          Object retObj=mainMethod.invoke(nullnew Object[]{input});  

  9.          return (String)retObj;  

  10.     }  

  11.     /*** 

  12.      * decode by Base64 

  13.      */  

  14.     public static byte[] decodeBase64(String input) throws Exception{  

  15.         Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");  

  16.         Method mainMethod= clazz.getMethod("decode", String.class);  

  17.         mainMethod.setAccessible(true);  

  18.          Object retObj=mainMethod.invoke(null, input);  

  19.          return (byte[])retObj;  

  20.     }  

 

第二种方式:

使用commons-codec.jar

Java代码  

  1. /** 

  2.      * @param bytes 

  3.      * @return 

  4.      */  

  5.     public static byte[] decode(final byte[] bytes) {  

  6.         return Base64.decodeBase64(bytes);  

  7.     }  

  8.   

  9.     /** 

  10.      * 二进制数据编码为BASE64字符串 

  11.      * 

  12.      * @param bytes 

  13.      * @return 

  14.      * @throws Exception 

  15.      */  

  16.     public static String encode(final byte[] bytes) {  

  17.         return new String(Base64.encodeBase64(bytes));  

  18.     }  

 

第三种方式:

Java代码  

  1. /**  

  2.     * 编码  

  3.     * @param bstr  

  4.     * @return String  

  5.     */    

  6.    public static String encode(byte[] bstr){    

  7.    return new sun.misc.BASE64Encoder().encode(bstr);    

  8.    }    

  9.    

  10.    /**  

  11.     * 解码  

  12.     * @param str  

  13.     * @return string  

  14.     */    

  15.    public static byte[] decode(String str){    

  16.    byte[] bt = null;    

  17.    try {    

  18.        sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();    

  19.        bt = decoder.decodeBuffer( str );    

  20.    } catch (IOException e) {    

  21.        e.printStackTrace();    

  22.    }    

  23.    

  24.        return bt;    

  25.    }