【Java8新特性】5.BASE64

一、Base64简介

Java8开始,在java.util包下新增了一种Base64的编码方案,该编码方案相关的概念解释如下:

  • Base64:是一种Java类库中的编码方案,也是一个编码工具类,用于实现字节数据的编码和解码;

  • Base64.Encoder:用于编码字节数据的编码器,线程安全;

  • Base64.Decoder:用于解码字节数据的解码器,线程安全;

  • Base64支持的编解码类型有:基本类型、URL类型、MIME类型;

  • 基本类型(Basic):对“Base64字母表”进行编解码操作(合法输出有:A到Z、a到z、0到9、+/),编码器不添加任何换行符(行分隔符)字符,解码器拒绝包含base64字母外的字符的数据;

  • URL类型(URL and Filename safe):对“URL和Filename safe Base64 Alphabet”进行编解码操作(合法输出有:A到Z、a到z、0到9、+_),编码器不添加任何换行符(行分隔符)字符,解码器拒绝包含base64字母外的字符的数据;

  • MIME类型(MIME):对“Base64字母表”进行编解码操作,编码输出必须以不超过76个字符的行'\n' ,并使用回车'\r'然后立即以换行'\n'作为行分隔符。 没有行分隔符添加到编码输出的末尾。 在解码操作中,将忽略base64字母表中未找到的所有行分隔符或其他字符。

二、Base64实战

熟悉了Base64编码方案相关的概念,结合api文档,实操一下:

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
/**
 * Java8新增了Base64编码方案的编码器Encoder和解码器Decoder
 *    编解码类型有:基本编码、URL编码、MIME编码, Demo测试
 *
 * @createTime 2020/10/13 18:34
 * @author weixiangxiang
 */
public class XxxTest extends BaseController {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String context = "你好,weixiangxiang!";
        // 基本编码
        String baseEncode = Base64.getEncoder().encodeToString(context.getBytes("utf-8"));
        logger.info("基本Base64编码字符串:" + baseEncode); //5L2g5aW977yMd2VpeGlhbmd4aWFuZ++8gQ==
        // 解码
        String baseDecoder = new String(Base64.getDecoder().decode(baseEncode), "utf-8");
        logger.info("基本Base64解码:" + baseDecoder); //你好,weixiangxiang!

        // URL编码
        String urlEncode = Base64.getUrlEncoder().encodeToString(context.getBytes(StandardCharsets.UTF_8));
        logger.info("URLBase64编码字符串:" + urlEncode); //5L2g5aW977yMd2VpeGlhbmd4aWFuZ--8gQ==
        String urlDecoder = new String(Base64.getUrlDecoder().decode(urlEncode), StandardCharsets.UTF_8);
        logger.info("URLBase64解码:" + urlDecoder); //你好,weixiangxiang!

        // Mime编码
        String mimeEncode = Base64.getMimeEncoder().encodeToString(context.getBytes(StandardCharsets.UTF_8));
        logger.info("MimeBase64编码字符串:" + mimeEncode); //5L2g5aW977yMd2VpeGlhbmd4aWFuZ++8gQ==
        String mimeDecoder = new String(Base64.getMimeDecoder().decode(mimeEncode), StandardCharsets.UTF_8);
        logger.info("MimeBase64解码:" + mimeDecoder); //你好,weixiangxiang!
    }
}

小结一下:

Base64编码方案可作为一种加密方式使用,而实际项目中使用更多的则是MD5方式进行加密。作为加密工具类无论是MD5、Base64、BCrypt还是SHA,了解编码和解码规则并能封装成工具类使用即可,不积硅步无以至千里,点滴付出终将有所收获,共同进步 ~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值