java base64编码和解码的三种方式
2014-04-26 10:46
459 查看
方式一:使用commons-codec.jar
方式二:通过反射使用java 中不对外公开的类
方式三:使用sun.misc.BASE64Encoder
测试:
参考:
http://hw1287789687.iteye.com/blog/1971297 http://hw1287789687.iteye.com/blog/1910853
/** * @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)); }测试:
String base64String = "whuang123"; byte[] result = Base64.encodeBase64(base64String.getBytes());
方式二:通过反射使用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; }
方式三:使用sun.misc.BASE64Encoder
/** * 编码 * * @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; }
测试:
package com.jn.base64; import junit.framework.Assert; import org.apache.commons.codec.binary.Base64; import com.common.util.SystemUtil; public class BaseTest { public static void main(String[] args) throws Exception { String base64String = "whuang123"; byte[] result = Base64.encodeBase64(base64String.getBytes()); SystemUtil.printBytes(result); byte[] result2 = SystemUtil.encode(base64String.getBytes()).getBytes(); System.out.println("result2:"+result2); byte[] result3 = SystemUtil.encodeBase64(base64String.getBytes()).getBytes(); boolean isSuccess = SystemUtil.isSame(result, result2); Assert.assertEquals(true, isSuccess); SystemUtil.printBytes(result2); SystemUtil.printBytes(result3); System.out.println(isSuccess); } }运行结果:
参考:
http://hw1287789687.iteye.com/blog/1971297 http://hw1287789687.iteye.com/blog/1910853
相关文章推荐
- java base64编码、解码的三种方式
- java base64编码的三种方式
- java base64编码的三种方式
- JAVA实现base64编码的三种实现方式
- JAVA实现Base64编码的三种方式
- java 中使用base64编码和解码:
- 【java】java base64编码与解码
- java实现base64编码和解码
- Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net
- java base64编码和解码
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
- Java如何进行Base64的编码(Encode)和解码(Decode)?
- JAVA关于base64编码Encode和Decode编码的几种方式
- MIME BASE64编码与解码 (java实现)
- android Java BASE64编码和解码二:图片的编码和解码
- 在 Java 中如何进行 BASE64 编码和解码(转)
- JS基础篇--JS对url进行编码和解码(三种方式区别)
- java实现Base64编码解码
- js 对url进行编码和解码的三种方式
- 在Java中如何进行BASE64编码和解码