天天看點

java base64編碼和解碼

轉載至:http://hw1287789687.iteye.com/blog/1910853

java 中使用base64編碼和解碼:

第一種方式:

通過反射使用java 中不對外公開的類:

java 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{  

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

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

         return (byte[])retObj;  

第二種方式:

使用commons-codec.jar

java base64編碼和解碼

/** 

     * @param bytes 

     * @return 

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

        return Base64.decodeBase64(bytes);  

    /** 

     * 二進制資料編碼為BASE64字元串 

     * 

     * @throws Exception 

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

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

第三種方式:

java base64編碼和解碼

/**  

    * 編碼  

    * @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;    

      本文轉自建波李 51CTO部落格,原文連結:http://blog.51cto.com/jianboli/1889690,如需轉載請自行聯系原作者