java-base64编码和解码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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{ 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; }
技术分享

推荐第二种,比较好用些。sun包有长度限制,不过具体使用根据情况而定。

 

以上是关于java-base64编码和解码的主要内容,如果未能解决你的问题,请参考以下文章

Java-Base64算法

使用OpenSSL进行Base64编码和解码

C#解码base64编码的二进制数据的代码

2D morton 代码编码/解码 64 位

使用base64编码和解码[重复]

base64加密和解码原理和代码