Java Base64简单介绍

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/329660.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android RecyleView 使用 Gilde 加载图片引发的卡顿问题

Glide 是一个用于 Android 的图片加载和缓存库。它可以帮助开发者快速、高效地加载网络图片、本地文件和视频帧,并且能够自动缓存图片数据,减少网络请求。Glide 具有良好的性能和易用的 API,支持常见的图片加载需求,例如图片压缩、…

k8s之pod的基础(下)

k8s的pod重启策略 Always deployment的yaml文件只能是Always pod的yaml三种模式都可以,不论正常退出还是非正常退出都重启 OnDailure: 只有状态码非0才会重启。正常退出是不重启的 Never 正常退出和非正常退出都不重启 容器的退出了,pod才…

【MySQL】索引基础

文章目录 1. 索引介绍2. 创建索引 create index…on…2.1 explain2.2 创建索引create index … on…2.3 删除索引 drop index … on 表名 3. 查看索引 show indexes in …4. 前缀索引4.1 确定最佳前缀长度:索引的选择性 5. 全文索引5.1 创建全文索引 create fulltex…

Docker-Compose部署Redis(v7.2)分片集群(含主从)

文章目录 一、前提准备1. 文件夹结构 二、配置文件1. redis.conf2. docker-compose文件 三、构建集群1. 自动分配主从关系2.1 构建3 master集群2.2 手动配置从节点 四、测试1. 集群结构2. 分片测试 环境 docker desktop for windows 4.23.0redis 7.2 目标 搭建如下图分片主从…

华为云服务器试用领取

系列文章目录 华为云服务器试用领取 领取的试用云服务器在哪 文章目录 系列文章目录介绍 介绍 我将会用该系列文章讲述如何在云服务器中安装大数据软件及其环境搭建。如有不足之处,还望指点。 本篇文章讲述的是华为云服务器的免费试用。 华为弹性云服务器 ECS 该云…

向日葵远程工具安装Mysql5.7的安装与配置

文章目录 一、向日葵远程工具安装二、Mysql5.7的安装与配置2.1解压2.2再把my.ini文件放入解压后的文件里面2.3.改变my.ini文件2.4.用管理员身份运行cmd,进入bin文件夹里,运行"mysqld install"命令,出现以下就说明成功了2.5.注册完s…

知识图谱之汽车实战案例综述与前瞻分析

知识图谱的前置介绍 什么是知识图谱 知识图谱本质(Knowledge Graph)上是一种叫做语义网络(semantic network ) 的知识库,即具有有向图结构的一个知识库;图的结点代表实体(entity)或者概念(con…

「斗破年番」5位斗宗大战,韩枫献海心焰晋斗宗,菩提涎争夺开战

Hello,小伙伴们,我是拾荒君。 国漫《斗破苍穹年番》第78期超前爆料,本期透露菩提化体涎的背后秘密。天鹰老人抢夺菩提化体涎后,迅速逃匿,却遭到了各路强者的围攻。然而,这位四星斗宗强者并非浪得虚名,他仅…

Spring之代理模式

1、概念 1.1 介绍 二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中…

Redis 有序集合(sorted set) 命令

目录 1.Redis Zrevrank 命令 - 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序简介语法可用版本: > 2.2.0返回值: 如果成员是有序集 key 的成员,返回成员的排名。 如果成员不是有序集 key 的成员,返回 nil 。 示例 2…

2024阿里云优惠_阿里云活动中心

2024年阿里云优惠活动大全,包括阿里云服务器优惠活动清单、配置价格表、域名优惠活动、阿里云建站活动、阿里云优惠代金券免费领取、对象存储OSS活动、企业邮箱优惠、无影云电脑优惠、CDN特惠等等,阿里云百科aliyunbaike.com分享2024阿里云优惠活动大全_…

循环队列的队空队满情况

有题目: 循环队列放在一维数组A[0....M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空。下列判断队空和队满的条件中,正确的是 …