欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java base64编码的三种方式

程序员文章站 2022-03-15 08:30:51
...

java 中如何使用base64编码呢?

有如下三种方式:

方式一:commons-codec.jar

String base64String = "whuang123";
		byte[] result = Base64.encodeBase64(base64String.getBytes());

 

方式二:使用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;
	 }

 

 

方式三:使用com.sun.org.apache.xerces.internal.impl.dv.util.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;
	}

 

测试:

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);
	}
}

 运行结果如下:
java base64编码的三种方式
            
    
    博客分类: JavaJava Web base64commons-codecdecodeencode编码 
 

推荐使用方式一

 

com.common.util.SystemUtil 源代码见附件

  • java base64编码的三种方式
            
    
    博客分类: JavaJava Web base64commons-codecdecodeencode编码 
  • 大小: 18.1 KB