Base64编码原理

article/2025/9/13 9:09:39

一、Base64是什么

base 64、base 32、base 16 编码建议标准  https://www.ietf.org/rfc/rfc4648.txt

Base64是基于64种字符的编码算法,即将数据使用64种字符表示,编码后的Base64字符串长度 通常为原来的3-4倍。(补充:Base32就是32个字符,Base16就是16个字符,为了能在Http get 参数方式传输,有了变体URLBase64,主要是将符号=和+换成了其他字符,因为这些字符在url有特殊的意义,不能直接,所以做了替换)

 即如下表,例如数字0(十进制)表示为A。即单表替换密码:明文的一个字符用另一个字符一一对应。所以Base64是可逆的,逆推过程后面介绍。

Base64的产生

当初发送电子邮件时,由于历史原因,电子邮件内容仅仅支持ascii码范围,所以如果发送其他文字,系统将会显示乱码。后来,将邮件内容使用Base64编码后再发送,接收方再使用Base64解码即可正常显示,因为Base64的64个字符都在ascii码以内,可看下图。

这里还有个问题,那么64以外到底是如何编码的呢?且看后面讲解。

二、编码原理

算法步骤

1. 得到编码数据的二进制码

如果编码数据为英文:将英文参照ascii码表转换为对应的数字表示形式,再将数字转为二进制

如果编码数据为中文:将中文使用unicode UTF8编码得到二进制

2. 将3个8位的二进制码为一组

3. 转换为4个6位二进制码为一组(不足6位补0,不足4个 最后追加补位符)

4. 对每组二进制码添加2位高位0

5. 将每组转换为十进制

6. 将每组的十进制转换为Base64字符表中对应的字符

三、示例:英文字符 A 的编码过程

此过程建议不断对照上面的步骤来回理解

首先字符A在ascii表中对应的数字是十进制的65, 65的二进制是 0100 0001

第二步 将3个8位的二进制码为一组

0100 0001  长度是8位,3个8位现在只有一个,就只分了一组

第三步 转换为4个6位二进制码为一组(不足6位补0,不足4个 最后追加补位符)

将上步转换为010000 和 01   由于第二个只有两位所以需要补0补到6位

所以到这步得到 010000 和 010000  现在只有两组,需要补位到4组,组的补位就用符号=

所以就是 010000 010000 = =  (补两组,就是两个=符号)

第四步  对每组二进制码添加2位高位0

得到  00010000 00010000 = =    注意红色,在每组前面补了两个0

第五步 将每组转换为十进制

00010000 00010000 = = 转换为十进制 就是 16 16 = =

这个可以用计算器算

第六步  将每组的十进制转换为Base64字符表中对应的字符

将上步16 16 = = 开始对应字符进行编码。 所以得到结果为 QQ==

四、示例:中文字符  我 的编码过程

第一步获得unicode utf8编码二进制。这步就直接用代码得到

具体这二进制是怎么来的,就自己看源码吧,我没有深究

第二步 将3个8位的二进制码为一组

开始进行分组  3 * 8 = 24 ,相当于24位为一组

111001101000100010010001 刚好一组

第三步 转换为4个6位二进制码为一组(不足6位补0,不足4个 最后追加补位符)

111001 101000 100010 010001

第四步  对每组二进制码添加2位高位0

得到 00111001 00101000 00100010 00010001 注意紫色,在每组前面补了两个0

第五步 将每组转换为十进制

00111001 00101000 00100010 00010001 转换为十进制

就是 57 40 34 17

这个可以用计算器算

第六步  将每组的十进制转换为Base64字符表中对应的字符

将上步 57 40 34 17 开始对应字符进行编码。 所以得到结果为 5oiR

五、Base64的应用

base64不能算作加密算法,只是一种简单的编码起到方便传输的问题,作为加密也不安全,它可逆。

1. 网络数据传输:怎么传输二进制数据?可以用Base64将二进制数据进行编码,将编码得到的字符串数据进行传输,接收方再使用Base64解码

2. 密钥存储:密钥是二进制数据,我们可以用Base64对他进行表述展示,毕竟二进制可读性差

3. 等

参考 <<Java加密与解密的艺术>>


http://chatgpt.dhexx.cn/article/2L8kDgc4.shtml

相关文章

Base64原理

前言 Base64是什么?它和加解密操作有什么关系吗?我们看一下下边这段字符串: aGVsbG8gd29ybGQ= 这就是经过Base64编码后的字符串,对它进行Base64解码,获得它原来的内容: hello world 这有点加密解密的意味,不过Base64并不能称为加密算法,仅仅是加密算法的近亲,可以称之…

Base64原理解析

一. Base64编码由来 为什么会有Base64编码呢&#xff1f;因为有些网络传送渠道并不支持所有的字节&#xff0c;例如传统的邮件只支持可见字符的传送&#xff0c;像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制&#xff0c;比如图片二进制流的每个字节不可…

base64加密原理详解

Base64编码&#xff0c;是我们程序开发中经常使用到的编码方法。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法&#xff01;也是MIME&#xff08;多用途互联网邮件扩展&#xff0c;主要用作电子邮件标准&#xff09;中…

Base64基本原理及简单应用

1.什么是Base64 Base64是一种基于64个可打印字符来表示二进制数据的编码方式,是从二进制数据到字符的过程。原则上,计算机中所有内容都是二进制形式存储的,所以所有内容(包括文本、影音、图片等)都可以用base64来表示。 2.Base64编码原理 Base64编码之所以称为Base64,是因…

一文详解 Base64编码原理

最近在看Android的签名与验签机制&#xff0c;其中涉及到 MD5、SHA2、SHA256 等摘要算法&#xff0c;也涉及到 Base64 编码机制。这里先从简单的入手&#xff0c;记录一下 Base64 编码机制的原理。 一、Base64由来 Base64 是一种编码方式&#xff0c;最早出现在电子邮件传输协…

在Unity中导入fbx格式文件

unity中是以米为单位&#xff0c;要想让3dmax中建的模型导入到unity中与unity自带的3d object尺寸一致&#xff0c;最直接的办法是将3dmax中的系统单位也设成米。在三维软件里设置 在菜单->自定义->单位设置&#xff1a; 导出FBX文件前 &#xff0c;我们需要注意如下问…

读取FBX文件踩坑清单

FBX文件得到了许多3D制图软件与3D游戏引擎的兼容&#xff0c;其发展趋势大好。因此若要编写一款3D图形系统&#xff0c;对FBX格式的支持是必经之路&#xff08;或者使用插件形式&#xff09;。笔者尝试在百度、必应等搜索引擎&#xff0c;外加fbxsdk实例的帮助下&#xff0c;读…

查看fbx文件

查看fbx文件可以使用 1.auto fbx review 2.unity 导入Inport New Asset 找到文件夹导入 拖拽到scene中即可查看

「.XD 文件 」用什么软件打开?

1、什么是「.XD 文件 」 「.XD 文件 」其实是 Adobe XD 文件格式。而 Adobe XD 是一款基于矢量的一站式 UI/UX 设计工具&#xff0c;可以进行移动应用和网页设计与原1型制作&#xff0c;从早期的构思和低保真设计&#xff0c;一直到令人印象深刻的动画和逼真的原型&#xff0c…

Unity Fbx转Prefab工具

1.功能描述 a.可将fbx直接导出prefab。 b.同时为prefab预先按需挂载脚本文件。 c.同时为挂载的脚本设置参数&#xff0c;绑定资源等。 d.批量化处理&#xff0c;递归遍历算法&#xff0c;高效可扩展。 2.实现方式 a.Editor类 using Lean.Touch; using Main; using System; usi…

将FBX文件导入Unity3d中

在Project中找到选择Assets: 点击鼠标右键出现下拉列表&#xff0c;在下拉列表中选择“Import New Asset..."选项&#xff1a; 点击后选择你要导入的FBX文件&#xff0c;导入&#xff1a; 然而这样导入的模型并不会显示贴图&#xff0c;要让模型可以正常显示贴图&#xff…

【pymxs】max文件导出fbx文件

1. 前言 .max格式是Autodesk公司下的3dsmax软件的通用格式&#xff0c;许多软件出于商业考虑都有自己的格式&#xff0c;例如网易云下载的音乐。 这也就意味着.max文件只能用Autodesk的产品打开&#xff0c;即3dsmax或maya。 Autodesk的产品均是非开源、封闭式的&#xff0c…

Fbx文件解析(一)——FBX SDK for Windows环境配置

Fbx文件解析&#xff08;一&#xff09;——FBX SDK for Windows环境配置 一、下载并安装FBX SDK 下载网址&#xff1a;http://www.autodesk.com/fbx 找到与自己Windows对应、与自己的VS版本对应的SDK版本&#xff0c;下载并按照安装步骤安装。安装时选择的安装文件夹就是下…

pmx转fbx的具体步骤

本文主要讲述了在Windows10环境下&#xff0c;通过blender将pmx格式文件转化为fbx文件的具体步骤 本文主要包括以下三个部分&#xff1a; 一、blender下载与安装二、cats插件安装三、pmx格式转换为fbx格式 一、blender下载与安装 1.下载blender到电脑上 blender下载 建议下载…

关于unity导出FBX文件

最近有项目需求需要根据特殊文件来绘制自定义图形&#xff0c;考虑到其他编辑器对此文件的共用&#xff0c;所以将图形导出为FBX格式。 在网上找到了一个git仓库在这也记录分享一下&#xff1a; Git仓库:UnityFBXExporterhttps://github.com/Ymiku/UnityFBXExporter 插件功能…

加载FBX模型文件

深入理解加载FBX模型文件 每个模型文件都有自己的格式&#xff0c;有自研引擎的模型格式&#xff0c;有AutoDesk提供的模型文件格式&#xff0c;比如FBX模型文件&#xff0c;因为Unity与UE4引擎的使用而备受关注&#xff0c;FBX文件是AutoDesk提供的SDK&#xff0c;已经封装好了…

FBX格式转换为GLTF/GLB格式

有小伙伴说通过blende将fbx转glb/gltb格式的模型无法在web端加载&#xff0c;或glb模型无法打开&#xff0c;比如腾讯地图加载gltf。 这里个大家分享一个插件 可以将fbx格式转换为glb格式 window版本 链接&#xff1a;https://pan.baidu.com/s/17wwI-hmezg9-sOnHZNn_uw?pwd1…

FBX文件导入Unity导致贴图丢失问题解决,以3ds max,Blender导入导出为例

一 . 首先把资产文件导入三维软件中 1 . 3ds Max 1.1 导入FBX——【免费或者质量差的资源可能会出现平滑组错误的情况&#xff0c;可以直接镜像一个模型更改法线或者删除面重新封口能解决问题】 1.2 导出FBX至Unity引擎 1.2.1 导出文件预设 注意【导出之后会产生一个FBX文件和流…

基于FBX SDK的FBX模型解析与加载 -(一)

1. 简介 FBX是Autodesk的一个用于跨平台的免费三维数据交换的格式&#xff08;最早不是由Autodesk开发&#xff0c;但后来被其收购&#xff09;&#xff0c;目前被 众多的标准建模软件所支持&#xff0c;在游戏开发领域也常用来作为各种建模工具的标准导出格式。Autodesk提供…

Unity场景素材导出为 FBX文件的方法

系列文章目录 一、Unity场景素材导出为 FBX文件的方法&#xff1a;http://t.csdn.cn/Xyjxe 二、Unity场景素材导出为 OBJ文件的方法&#xff1a;http://t.csdn.cn/08RY3 三、Unity地形导出为 OBJ文件的方法 &#xff08;大家可以打开我的博客主页进行查看此系列其它文章&…