你的位置:首页 > Java教程

[Java教程]Base64编码的使用方法


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(null, new 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.    }    

参考原文:http://hw1287789687.iteye.com/blog/1910853