一文详解 Base64编码原理

article/2025/9/13 9:09:06

最近在看Android的签名与验签机制,其中涉及到 MD5、SHA2、SHA256 等摘要算法,也涉及到 Base64 编码机制。这里先从简单的入手,记录一下 Base64 编码机制的原理。

一、Base64由来

Base64 是一种编码方式,最早出现在电子邮件传输协议中。
电子邮件问世之初,传递消息时只支持 ASCII 字符,后来随着电子邮件的广泛使用,传递非ASCII字符内容的需求增加,例如:传输中文、传输文件(图片、视频)。
为解决这一问题,最好的方案是在不改变传输协议的基础上,做一种扩展方案来支持非ASCII内容传输把非 ASCII 字符用ASCII来表示,Base64编码应运而生。

Base64由来

二、Base64定义

Base64 是一种基于64个 ASCII 字符来表示二进制数据的表示方法
Base64 将8比特位为一个单元的字节数据拆分为以6个比特位为一个单元的二进制片段,每6个比特位单元对应Base64索引表中的一个字符,这样最终构成一个超过编码前字节数据33%的字符串。

Base64 中64个可打印字符包括字母A-Za-z、数字0-9,此外还有两个字符为+和/,这样构成了共有64字符的Base64索引表

Base64索引表

三、Base64编码原理

Base64 将8比特位为一个单元的字节数据拆分为以6个比特位为一个单元的二进制片段;每6个比特位单元对应Base64索引表中的一个字符
按照以上方式可以算出base64编码后的字符串大约比编码前增加了33%

举例如下:
编码 Man 的Base64结果为TWFu,Base64编码计算过程如下:

文      本:M        a        n
ASCII 编码:77       97       110
8bit  字节:01001101 01100001 01101110
6bit  字节:010011 010110 000101 101110
Base64索引:19     22     5      46
Base64编码:T      W      F      u

为什么一些Base64后的字符中末尾有“==”

以上举例中:
编码前字节数正好被3整除,转化为二进制ASCII 编码3*8=24 )后,正好可以被6整除
编码前字节数不能被3整除,最后会余出1个或2个字节,那么编码时需要:

  • 使用 000000 字节值在末尾补足,使其字节数能够被3整除;
  • 编码时补位的6个比特位单元= 表示。

举例如下:
编码 Lucy 的Base64结果为THVjeQ==,Base64编码计算过程如下:

文      本:L        u        c        y
ASCII 编码:76       117      99       121
8bit  字节:01001100 01110101 01100011 01111001 (补)00000000 (补)00000000
6bit  字节:010011 000111 010101 100011 011110 010000 000000 000000
Base64索引:19     7      21     35     30     16     (补位)  (补位)
Base64编码:T      H      V      j      e      Q      =      =

由于Lucy只有4个字母,所以按3个一组的话,第二组还有两个空位。所以需要用00000000来补位,这里就需要注意,因为是需要补齐而出现的0,转化成十进制的时候就不能按常规用base64编码表来对应,所以不是A,编码后对应 “=” 。

参考

维基百科 Email:
https://en.wikipedia.org/wiki/Email

Content-Transfer-Encoding:
https://www.jianshu.com/p/7e0c2d078745

Base64 Data Encodings:
https://datatracker.ietf.org/doc/html/rfc4648

= THE END =

欢迎关注我的公众号


http://chatgpt.dhexx.cn/article/AuVoyxNs.shtml

相关文章

在Unity中导入fbx格式文件

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

读取FBX文件踩坑清单

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

查看fbx文件

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

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

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

Unity Fbx转Prefab工具

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

将FBX文件导入Unity3d中

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

【pymxs】max文件导出fbx文件

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

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

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

pmx转fbx的具体步骤

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

关于unity导出FBX文件

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

加载FBX模型文件

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

FBX格式转换为GLTF/GLB格式

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

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

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

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

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

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

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

Unity导入FBX动画文件

给刚入门的同学稍微记一下fbx格式动画导入unity的步骤: 首先直接把fbx文件拖入unity内,如图操作 将avatar骨骼创建之后,我们接下来就根据自己对动画的一些需求设置一下动画的参数,比如截取一下动画的开始帧和结束帧来达到剪切的目…

深入理解加载FBX模型文件

每个模型文件都有自己的格式,有自研引擎的模型格式,有AutoDesk提供的模型文件格式,比如FBX模型文件,因为Unity与UE4引擎的使用而备受关注,FBX文件是AutoDesk提供的SDK,已经封装好了,我们并不能查…

FBX模型

概览 fbx文件,一般是导出给unity使用的模型文件。 如下图所示,建立一个models目录,然后右击,选择 imoprt new asserts 即可导入这些文件。 展示如下,Mesh定义了形状。 铅笔也是同理,只不过铅笔有自己的贴图…

FBX文件简述

1. 关于FBX Autodesk FBX是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件,通过FBX用户能访问大多数三维供应商的三维文件。FBX 文件格式支持所有主要的三维数据元素以及二维、音频和视频媒体元素。 FBX由Kaydara开发并于2006年被AUT…

fbx格式研究

Part1fbx简介 Autodesk FBX是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件,通过FBX用户能访问大多数三维供应商的三维文件。FBX 文件格式支持所有主要的三维数据元素以及二维、音频和视频媒体元素。FBX对于三维软件的兼容性非常非常强大&#x…