base64编码,原理是什么,有什么作用?

article/2025/9/13 7:00:20

base64到底是什么东西呢?

Base64编码是网络上常见的用于传输8bit字节数据的一种编码方式之一 , 有些人和书本会将编码写成加密算法,这其实是欠妥的。因为任何人拿到编码后的数据都能转化成原始数据,算法是透明的,也不存在秘钥的概念。

实现原理

Base64编码将一个8位子节序列拆散为6位的片段,并为每个6位的片段分配一个字符,这64个字符----小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/" , 看到这里知道64是什么意思了吧,是代表64个字符,其实还有一个垫字的"=",实际上是65个字符。

Base64规则如下:

第一步,将每三个字节作为一组,一共是24个二进制位。

第二步,将这24个二进制位分为四组,每个组有6个二进制位。

第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节。所以base64编码字符串大约比原来大了33%

例子

举一个具体的实例,演示英语单词Man如何转成Base64编码。

Text contentMan
ASCII7797110
Bit pattern010011010110000101101110
Index1922546
Base64-EncodedTWFu

第一步,"M"、"a"、"n"的ASCII值分别是77、97、110,对应的二进制值是01001101、01100001、01101110,将它们连成一个24位的二进制字符串010011010110000101101110。

第二步,将这个24位的二进制字符串分成4组,每组6个二进制位:010011、010110、000101、101110。

第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节:00010011、00010110、00000101、00101110。它们的十进制值分别是19、22、5、46。

第四步,根据下图,得到每个值对应Base64编码,即T、W、F、u。

因此,Man的Base64编码就是TWFu。

如果字节数不足三,则这样处理:

a)二个字节的情况:将这二个字节的一共16个二进制位,按照上面的规则,转成三组,最后一组除了前面加两个0以外,后面也要加两个0。这样得到一个三位的Base64编码,再在末尾补上一个"="号。

比如,"Ma"这个字符串是两个字节,可以转化成三组00010011、00010110、00010000以后,对应Base64值分别为T、W、E,再补上一个"="号,因此"Ma"的Base64编码就是TWE=。

b)一个字节的情况:将这一个字节的8个二进制位,按照上面的规则转成二组,最后一组除了前面加二个0以外,后面再加4个0。这样得到一个二位的Base64编码,再在末尾补上两个"="号。

比如,"M"这个字母是一个字节,可以转化为二组00010011、00010000,对应的Base64值分别为T、Q,再补上二个"="号,因此"M"的Base64编码就是TQ==。

再举一个中文的例子,汉字"严"如何转化成Base64编码?

这里需要注意,汉字本身可以有多种编码,比如gb2312、utf-8、gbk等等,每一种编码的Base64对应值都不一样。下面的例子以utf-8为例。

首先,"严"的utf-8编码为E4B8A5,写成二进制就是三字节的"11100100 10111000 10100101"。将这个24位的二进制字符串,按照第3节中的规则,转换成四组一共32位的二进制值"00111001 00001011 00100010 00100101",相应的十进制数为57、11、34、37,它们对应的Base64值就为5、L、i、l。

所以,汉字"严"(utf-8编码)的Base64值就是5Lil。

 

那有童鞋会问了,这个到底有什么用?应用场景是怎样的?

base64的初衷,是为了满足电子邮件中不能直接使用非ASCII码字符的规定.现在最常用的应用场景就是在http协议上传输较长的文本信息。它是将用户输入的二进制数据,打包成一种安全格式,将其作为http首部字段的值发送出去,而无须担心其中包含会破坏HTTP分析程序的冒号、换行符或二进制值。

除此以外,也有其他重要的意义:

a)所有的二进制文件,都可以因此转化为可打印的文本编码,使用文本软件进行编辑;

b)能够对明文文本进行简单的处理,只能防肉眼,就是一个君子加密方式。

最重要的特点

1.便于网络传输。

2.不可见性。

Base 64 Encoding有什么用?举个简单的例子,你使用SMTP协议 (Simple Mail Transfer Protocol 简单邮件传输协议)来发送邮件。因为这个协议是基于文本的协议,所以如果邮件中包含一幅图片,我们知道图片的存储格式是二进制数据(binary data),而非文本格式,我们必须将二进制的数据编码成文本格式,这时候Base 64 Encoding就派上用场了。

 

Base64编码的作用:由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。它使用下面表中所使用的字符与编码。

而且base64特别适合在http,mime协议下快速传输数据。

X.509公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要作一下这样的编码呢?

我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

 

如一个xml当中包含另一个xml数据,此时如果将xml数据直接写入显然不合适,将xml进行适当编码存入较为方便,事实上xml当中的字符一般都是可见字符(0-127之间),但是由于中文的存在,可能存在不可见字符,直接将字符打印在外层xml的数据中显然不合理,那么怎么办呢?
可以使用base64进行编码,然后存入xml,解码反之
其实还有个办法,将byte的值写在xml当中,空格或者,分开,这样也可以将byte数据传入,不过这样更浪费空间,并且不易保存.

比如http协议当中的key value字段的值,必须进行URLEncode ,因为一些特殊符号(等号或者空格)是有特殊含义的,造成混淆,解析失败,那么需要把这些值统一处理为可见字符,传输完再解析回来。

 

 


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

相关文章

一篇文章彻底掌握Base64编码原理

一篇文章彻底掌握Base64编码原理 在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇博文带领大家了解一下Base64的底层实现。 Base64的由来 目前Base64已经成为网络上常见的传输8Bit字节代…

Base64编码解码原理详解

Base64编码解码原理详解 1. Base64字符的组成部分 Base64所用字符: 0,1,2 ….9 A,B,C,D…Z a,b,c,d…z / 对应ASCII: 48,49…58,65,66…90,97,98…122, 43,47 2. 10个数字,26个大写字母,26个小写字母,1个&#xff0c…

彻底弄懂base64的编码与解码原理

作者介绍 背景 base64的编码原理网上讲解较多,但解码原理讲解较少,并且没有对其中的内部实现原理进行剖析。想要彻底了解base64的编码与解码原理,请耐心看完此文,你一定会有所收获。 涉及算法与逻辑运算概念 在探究base64编码原理…

深入理解 Base64 底层原理

Base64 是一种常见数据编码方式,常用于数据传输。对于移动开发者来讲,网络请求中会经常使用到。对 JSON 熟悉的同学都知道,JSON 的序列化工具都不支持将 byte 数组直接放入 JSON 数据中,针对这种二进制数据,在处理的时…

Base64基本原理

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

一篇文章彻底弄懂Base64编码原理

在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇博文带领大家了解一下Base64的底层实现。 Base64的由来 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时&…

Base64编码原理

一、Base64是什么 base 64、base 32、base 16 编码建议标准 https://www.ietf.org/rfc/rfc4648.txt Base64是基于64种字符的编码算法,即将数据使用64种字符表示,编码后的Base64字符串长度 通常为原来的3-4倍。(补充:Base32就是…

Base64原理

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

Base64原理解析

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

base64加密原理详解

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

Base64基本原理及简单应用

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

一文详解 Base64编码原理

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

在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版本,下载并按照安装步骤安装。安装时选择的安装文件夹就是下…