Java代码如何实现Base64编码解码呢?

乔欣 Java经验 发布时间:2023-07-03 11:14:36 阅读数:13792 1
下文笔者讲述Base64的编码和解码方法分享,如下所示
Base64编码和解码的实现思路
      我们可以使用
	   sun.misc.BASE64Decoder
         和
	   sun.misc.BASE64Encoder
	   包中的内容实现base64的编码和解码的操作
例:base64编码和解码的工具类
package com.java265.util;
 
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
 
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
 
/**
 * 字符串的编码、解密
 *
 */
public class Encode {
	/**
	 * 字节转编码为 字符串( UTF-8 编码)
	 * 
	 * @param bytes
	 *            输入的字节数组
	 * @return 字符串
	 */
	public static String byte2String(byte[] bytes) {
		return new String(bytes, StandardCharsets.UTF_8);
	}
	
	/**
	 * 字符串转为 UTF-8 编码的字符串
	 * 
	 * @param str
	 *            输入的字符串
	 * @return UTF-8 字符串
	 */
	public static String byte2String(String str) {
		return byte2String(str.getBytes());
	}
	
	/**
	 * 将 URL 编码的字符还原,默认 UTF-8 编码
	 * 
	 * @param str
	 *            已 URL 编码的字符串
	 * @return 正常的 Java 字符串
	 */
	public static String urlDecode(String str) {
		try {
			return URLDecoder.decode(str, StandardCharsets.UTF_8.toString());
		} catch (UnsupportedEncodingException e) {
			return null;
		}
	}
 
	/**
	 * 将字符进行 URL 编码,默认 UTF-8 编码
	 * 
	 * @param str
	 *            正常的 Java 字符串
	 * 
	 * @return 已 URL 编码的字符串
	 */
	public static String urlEncode(String str) {
		try {
			return URLEncoder.encode(str, StandardCharsets.UTF_8.toString());
		} catch (UnsupportedEncodingException e) {
			return null;
		}
	}
 
	/**
	 * url 网址中文乱码处理。
	 * 如果 Tomcat 过滤器设置了 utf-8 那么这里就不用重复转码了
	 * 
	 * @param str
	 *            通常是 url Query String 参数
	 * @return 中文
	 */
	public static String urlChinese(String str) {
		return byte2String(str.getBytes(StandardCharsets.ISO_8859_1));
	}
	
	/**
	 * BASE64 编码
	 * @param bytes输入的字节数组
	 * @return 已编码的字符串
	 */
	public static String base64Encode(byte[] bytes) {
		return new BASE64Encoder().encode(bytes);
	}
	
	/**
	 * BASE64 编码
	 * 
	 * @param str
	 *            待编码的字符串
	 * @return 已编码的字符串
	 */
	public static String base64Encode(String str) {
		return base64Encode(str.getBytes());
	}
	
	public static byte[] base64DecodeAsByte(String str) {
		BASE64Decoder decoder = new BASE64Decoder();
 
		try {
			return decoder.decodeBuffer(str);
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}
 
	/**
	 * BASE64 解码 这里需要强制捕获异常。
	 * 中文乱码:
	 * 
	 * @param str
	 *            已解码的字符串
	 * @return 已解码的字符串
	 */
	public static String base64Decode(String str) {
		return byte2String(base64DecodeAsByte(str));
	}
}
Base64编码和解码的示例
static String str = "java265.com是我最爱的网站";
 
assertEquals("abc", byte2String(new byte[] {97, 98, 99}));
 
assertEquals("java", byte2String("java"));
 
assertEquals("java265.com是我最爱的网站", byte2String(str));
 
assertEquals(urlDecode(urlEncode(str)), str);
 
assertEquals(base64Deode(base64Encode(str)), str);
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202307/16883541176967.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者