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(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.    } 
  26. 第四种方式,试验成功   
  27. import  sun.misc.BASE64Encoder; 
    import  sun.misc.BASE64Decoder; 
     
    // 将 s 进行 BASE64 编码 
    public  static  String getBASE64(String s) { 
    if  (s ==  null return  null
    return  ( new  sun.misc.BASE64Encoder()).encode( s.getBytes() ); 
     
    // 将 BASE64 编码的字符串 s 进行解码 
    public  static  String getFromBASE64(String s) { 
    if  (s ==  null return  null
    BASE64Decoder decoder =  new  BASE64Decoder(); 
    try 
    byte [] b = decoder.decodeBuffer(s); 
    return  new  String(b); 
    catch  (Exception e) { 
    return  null
    }

你可能感兴趣的:(java基础)