java base64编码的三种方式

本文介绍了在Java中实现Base64编码的三种方法:使用commons-codec.jar库、使用sun.misc.BASE64Encoder和使用com.sun.org.apache.xerces.internal.impl.dv.util.Base64。提供了每种方法的具体实现代码,并附带了一个简单的测试案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 运行结果如下:

 

推荐使用方式一

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值