Base64编码

news2024/11/19 6:13:10

介绍 Base64 编码

Base64 是一种使用 64 个可打印字符来表示二进制数据的编码方式。

Base64 中的 64 个可打印字符包括:大小写字母 a - z、阿拉伯数字 0 - 9,这样共有 62 个字符,另外两个可打印字符在不同的系统中而不同。RFC 4648 标准中,另外两个可打印字符是:加号 + 、斜线 /。Base64 使用等号 = 作为填充字符。


技术是为了解决问题而生的,Base64 编码的作用是:使用 64 个可打印字符来表示二进制数据,以便二进制数据在计算机中存储、通过网络传输。

Base64 编码的规则

Base64 编码的规则是:

  • 首先,将二进制数据中每 “三组 8 个二进制位” 重新分组为 “四组 6 个二进制位”;
  • 然后,每组的 6 个二进制位用一个十进制数来表示。6 个二进制位可表示的十进制数的范围是 0 - 63;
  • 接下来,根据 Base64 索引表,将每组的十进制数转换成对应的字符,即每组可以用一个可打印字符来表示;

“Man” 的 Base64 编码结果为 “TWFu”,详细原理如下:

image-20230123120757169.png


Base64 编码将 3 个字节编码为 4 个字符。如果要编码的字节数不能被 3 整除,最后会多出 1 个或 2 个字节,那么可以使用下面的方法进行处理:

  • 先使用 0 字节值在末尾补足,使字节数能够被 3 整除,然后再进行 Base64 编码。
  • 在 Base64 编码结果的末尾加上一个或两个等号 =,代表补足的字节数。

举例说明,最后剩余两个字节待补足:

image-20230123121133570.png

举例说明,最后剩余一个字节待补足:

image-20230123121153663.png

Base64 索引表

RFC 4648 标准的 Base64 索引表

十进制二进制字符十进制二进制字符十进制二进制字符十进制二进制字符
0000000A16010000Q32100000g48110000w
1000001B17010001R33100001h49110001x
2000010C18010010S34100010i50110010y
3000011D19010011T35100011j51110011z
4000100E20010100U36100100k521101000
5000101F21010101V37100101l531101011
6000110G22010110W38100110m541101102
7000111H23010111X39100111n551101113
8001000I24011000Y40101000o561110004
9001001J25011001Z41101001p571110015
10001010K26011010a42101010q581110106
11001011L27011011b43101011r591110117
12001100M28011100c44101100s601111008
13001101N29011101d45101101t611111019
14001110O30011110e46101110u62111110+
15001111P31011111f47101111v63111111/
填充=

image-20230123120641215.png

参考资料

Base64 - 维基百科,自由的百科全书 (wikipedia.org)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员可以不看书,但不可以不知道这些网站!

程序员可以不看书,但是不能停止学习。如果你不喜欢看书,这些网站可以先收藏下来! 花了两天整理出的程序员常看的网站,纯纯干货来了↓↓ 一、学习网站 ①菜鸟教程 这个网站有HTML、CSS、Javascript、PHP、C、Python等各种基础编…

关于python常用软件用法:Pycharm 常用功能

一.Pycharm的基本使用 1.在Pycharm下为你的Python项目配置Python解释器 (1).Setting>Project Interpreter>源码资料电子书:点击此处跳转文末名片获取 二.在Pycharm下创建Python文件、Python模块 1.File>New>Python File2.File>New>P…

Mysql高级部分学习笔记(一)——底层及索引

0. 概述 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题…

使用windows电脑SSH客户端链接Iphone手机的sshd服务(免越狱)

最近有需求使用电脑导出手机中特定app的文件。 当然可以直接连上数据线将手机中的文件下载下来。 为了能做到代码自动化导出,将手机作为一台电脑使用,将手机中的文件导出来。 关键问题是如何将手机作为电脑使用,这里有几个步骤(我使用的是…

关于接口测试自动化的总结与思考

关于接口测试自动化的总结与思考 目录:导读 什么是服务端? 什么是接口? 什么是接口测试? 为什么要做接口测试? 如何做接口测试? 什么是接口测试自动化? 为什么要做接口测试自动化? 接口测试自动化的规范 文档准备 明确接口测试自动化需…

CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路

作者|张磊 CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路-阿里云开发者社区 Kubernetes 项目目前的重点发展方向,是为开发者和使用者暴露更多的接口和可扩展机制,将更多的用户需求下放到社区来完成。其中,发展最为成熟…

再探前端低代码的“野路子”

之前码过很多低代码的文章,发现大家口中的低代码挺不一样的,这次心血来潮想探探低代码的野路子。 只需要拖拽操作或者几行基础代码,就能完成以往需要程序员才能搭建的各类应用系统,对效率要求较高的企业而言,是不是很有…

命令执行简介、命令执行函数

数据来源 命令执行简介 01 命令执行漏洞产生原因 02 命令执行漏洞的危害 03 远程代码执行 1)远程代码执行- eval函数 2)远程代码执行 - assert函数 3)远程代码执行 - preg_replace函数 使用方法和一句话木马一样 示例: 在ph…

9 多分类问题

文章目录问题引入网络设计改进网络方法softmax层lossMINIST引入代码实现课程内容来源: 链接课程文本借鉴: 链接以及Birandaの突然发现的也挺好:链接 问题引入 前篇中,对糖尿病数据集的问题是一个二分类问题,但实际问…

vue-node解决 rollbackFailedOptional: verb npm-session fd23ceb3f5797b77进度条卡住的问题

一、文章引导 #mermaid-svg-qv5tmCFBaoUwQojc {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qv5tmCFBaoUwQojc .error-icon{fill:#552222;}#mermaid-svg-qv5tmCFBaoUwQojc .error-text{fill:#552222;stroke:#55222…

RabbitMQ常见场景问题

RabbitMQ常见场景问题 文章目录RabbitMQ常见场景问题6种工作模式1.直连模式2.发布订阅模式3.Routing路由模式4.Topic通配符模式5.Header模式6.RPC消息不丢失消息发送到交换机失败1.配置文件开启发布确认2.配置回调函数3.测试4.如何处理失败消息RabbitMQ服务器故障持久化消息发送…

存量房贷利率,一种简单估算其自然年利率调整的方法。

1.摘要2022年过去了,总所周知LPR被多次下调,目前有存量房贷的朋友,如果(普遍)设置的是根据自然年LPR动态调整利率,到2023年2月应该注意到了比较明显的房贷金额变动。这里主要给出一种根据这个变动&#xff…

Plecs电力电子仿真专业教程-第一季 第一节 Plecs简介

Plecs电力电子仿真专业教程-第一季 第一章 Plecs是什么? 第一节 Plecs简介 Plecs是瑞士Plexim GmbH公司开发的系统级电力电子仿真软件PLECS。PLECS是一个用于电路和控制结合的多功能仿真软件,尤其适用于电力电子和传动系统。不管您是工业领域中的开发…

[架构之路-96]:《软件架构设计:程序员向架构师转型必备》-6-需求与用户用例User Case/Senario建模

第6章 需求与用户用例User Case建模备注:严格意义上讲,用户用例属于需求分析领域,不属于架构设计。用户用例是架构设计最重要的输入参考之一。User Case和User Senario是非常重要的描述需求的重要手段6.1 常用的4种用例技术6.1.1 用例图6.1.2…

学习Java开发按此路线规划,从10K到40K全都有了,我就是这样过来的

如果有一天我醒来时,发现自己的几年Java开发经验被抹掉,重新回到了一个小白的状态。我想要重新自学Java,然后找到一份自己满意的Java工作,我想大概只需要6个月的时间就够了,如果顺利的话,4个月也差不多。如…

用光盘怎样重装电脑系统

用光盘怎样重装电脑系统?重装系统,听起来好像很难的样子。其实没那么难,用光盘装还是比较容易的。下面一起看看如何用光盘重装系统吧。 工具/原料: 系统版本:win7 品牌型号:联想yoga13 方法/步骤&#xf…

Vue使用axios发送get请求并携带参数

前言 其实关于Vue使用axios发送get请求并携带参数,我之前写过一篇,但是昨天又发现了另外一种方式,所以就单独写一篇进行总结。 之前写的那篇使用get请求并携带参数都是使用的字符串拼接的方式 感兴趣可以参考: Vue使用axios进行g…

基于Android的校园资产管理系统

需求信息: 管理员用户: 1:用户注册登录:通过手机号码、用户名称以及密码完成用户的注册和登录 2:添加资产:添加资产的编号、名称、归属部门之后生成资产二维码,以及查看添加过的资产信息 3&…

amCharts Javascript Web 5.3.0 Crack

添加新的 JSON 插件,允许您将序列化 (JSON) 配置解析为图表。 2023 年 1 月 31 日 - 16:00新版本 特征 添加了新JSON插件,允许将序列化 (JSON) 配置序列化和解析为图表。 crisp(默认:)false设置已添加到Sprite。如果设…

已经拿到IB成绩的学生,应该怎么为申请大学做准备呢?

2023年将会是过渡的一年,前几年的高分可能一去不复返了,大家心里也是要做好准备。对于今年已经拿到IB成绩的孩子们,应该怎么为申请大学做准备呢?老师也给了大家一些建议。1.如何递交IB成绩给申请的大学?今年1月出成绩的…