首页 > 编程 > Java > 正文

Java实现BASE64编码和解码的方法

2019-11-26 13:34:51
字体:
来源:转载
供稿:网友

BASE64和其他相似的编码算法通常用于转换二进制数据为文本数据,其目的是为了简化存储或传输。更具体地说,BASE64算法主要用于转换二进制数据为ASCII字符串格式。Java语言提供了一个非常好的BASE64算法的实现,。本文将简要地讲述怎样使用BASE64以及它是怎样工作的。

Base64的作用:主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输。由于一些二进制字符在传输协议中属于控制字符,不能直接传送需要转换一下就可以了。

第一种方式:
通过反射使用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

/**    * @param bytes    * @return    */   public static byte[] decode(final byte[] bytes) {     return Base64.decodeBase64(bytes);   }    /**    * 二进制数据编码为BASE64字符串    *    * @param bytes    * @return    * @throws Exception    */   public static String encode(final byte[] bytes) {     return new String(Base64.encodeBase64(bytes));   } 

 第三种方式:
 

/**   * 编码   * @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;    }  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表