Java Base64简单介绍

发布时间:2024年01月07日

1. Base64工具

工具链接
在这里插入图片描述

2. Base64示例代码

public class Base64Demo {
    // 请注意,在处理二进制数据时(例如图片或文件),不需要将字节数组转换为字符串再进行编码或解码,
    // 可以直接对字节数组进行Base64操作。上述示例中的字符串是为了简化演示而使用的。
    public static void main(String[] args) {
    	// 编码
        enCode();
        // 解码
        deCode();
    }

    private static void enCode() {
        // 待编码的字符串
        String originalString = "Hello, World!";

        // 使用默认的Base64.Encoder进行编码
        byte[] encodedBytes = Base64.getEncoder().encode(originalString.getBytes(StandardCharsets.UTF_8));

        // 输出编码后的Base64字符串
        System.out.println("Base64 Encoded String: " + new String(encodedBytes, StandardCharsets.UTF_8));
    }

    private static void deCode() {
        // 已经编码的Base64字符串
        String encodedString = "SGVsbG8sIFdvcmxkIQ==";

        // 将Base64字符串转换成字节数组
        byte[] encodedBytes = encodedString.getBytes(StandardCharsets.UTF_8);

        // 使用Base64.Decoder进行解码
        byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes);

        // 将解码后的字节数组转换回字符串
        String originalString = new String(decodedBytes, StandardCharsets.UTF_8);

        // 输出解码后的原始字符串
        System.out.println("Decoded Original String: " + originalString);
    }
}

下面内容为引用

3. 了解Base64

  • Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法(并不是encode后的文本字符大小是64个)

  • 将 byte数组编码为字符串的方法,而且编码出的字符串只包含ASCII基础字符。

  • 例如字符串ShuSheng007对应的Base64为U2h1U2hlbmcwMDc=。其中那个=比较特殊,是填充符,不属于64个字符中在编码后的Base64文本后加上一个或两个 = 号,代表补足的字节数。

  • 值得注意的是Base64不是加密算法,其仅仅是一种编码方式,算法也是公开的,所以不能依赖它进行加密。

4. Base64使用到的64个字符:

  • A-Z 26个
  • a-z 26个
  • 0-9 10个
  • + 1个
  • / 1个

下图是Base64码表,可以看到从0到63的每个数字都对应一个上面的一个字符。

在这里插入图片描述

5. Base64 编码的优点

  • 算法是编码,不是压缩,编码后只会增加字节数(一般是比之前的多1/3,比如之前是3, 编码后是4)
  • 算法简单,基本不影响效率
  • 算法可逆,解码很方便,不用于私密传输。
  • 毕竟编码了,肉眼不能直接读出原始内容。
  • 加密后的字符串只有【0-9a-zA-Z+/=】 不可打印字符(转译字符)也可以传输

6. Base64就是为了解决各系统以及传输协议中二进制不兼容的问题而生的

因为Base64的64个字符和= 以及它表示的二进制在哪都通用

7. Base64 DataURI格式

有时你会发现web页面传给你的base64字符串前面有类似下面的东东。

data:image/jpeg;base64, /9j/4AA…

这是DataURI,大部分浏览器支持直接打开这类二进制数据,但是我们要格外注意,
如果你只是想要真实的Base64内容就需要取,后边的内容

8. Base64用途

  • 对于证书来说,尤其是根证书,一般是 base64 编码的,在网上被很多人下载
  • 电子邮件的附件一般是 base64 编码,因为附件往往有不可见字符
  • xml 中如果像嵌入另外一个 xml 文件,直接嵌入,往往 xml 标签就乱套了, 不容易解析,因此,需要把 xml 编译成字节数组的字符串,编译成可见字符。
  • 网页中的一些小图片,可以直接以 base64 编码的方式嵌入,不用再链接请求消耗网络资源。
    外一个 xml 文件,直接嵌入,往往 xml 标签就乱套了, 不容易解析,因此,需要把 xml 编译成字节数组的字符串,编译成可见字符。
  • 网页中的一些小图片,可以直接以 base64 编码的方式嵌入,不用再链接请求消耗网络资源。
  • 较老的纯文本协议 SMTP ,这些文本偶尔传输一个文件时,需要用 base64
文章来源:https://blog.csdn.net/weixin_43024834/article/details/135446131
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。