一、 BASE64编码
把byte[]中的元素当做无符号八位整数转换成只含有64个基本字符的字符串,这些基本字符是:
l 大写的A-Z
l 小写的a-z
l 数字0-9
l '+' 和 '/'
这64个字符构成BASE64的字符集。‘=’,为填充字符,结尾处可以填充0-2个填充字符
Base64是将原文按照每 3 个字节一组分开,这个 3 字节组中的每一组将被按照位分解成 4 个部分,每个部分 6 个位,在这 4 个部分的每个部分高位加上 2 个 0构成一个新的 4 字节组,新的字节组中,每个字节只有 6 位,能表示64个值。
在原文在转换为BASE64编码时,试是以3个字节为一组转换成4字节一组的BASE64编码。如果原文不是三字节的倍数,可能多出一个字节和两个字节,分别会被转为2字节和3字节的BASE64编码,这时编码系统应该在形成的BASE64编码最后添加上填充符”=”,保证BASE64编码长度是4的倍数。所以在BASE64编码后添加的填充符”=”可能为0-2个。
BASE64编码对照表如下:
<table style="width: 600px; background-color: #ccccff;" border="0" cellspacing="1" cellpadding="2"><tbody><tr><td style="background-color:#FFFFFF; text-align:center">索引</td><td style="background-color:#FFFFFF; text-align:center">对应字符</td><td style="background-color:#FFFFFF; text-align:center">索引</td><td style="background-color:#FFFFFF; text-align:center">对应字符</td><td style="background-color:#FFFFFF; text-align:center">索引</td><td style="background-color:#FFFFFF; text-align:center">对应字符</td><td style="background-color:#FFFFFF; text-align:center">索引</td><td style="background-color:#FFFFFF; text-align:center">对应字符</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">0</td><td style="background-color:#FFFFFF; text-align:center">A</td><td style="background-color:#FFFFFF; text-align:center">17</td><td style="background-color:#FFFFFF; text-align:center">R</td><td style="background-color:#FFFFFF; text-align:center">34</td><td style="background-color:#FFFFFF; text-align:center">i</td><td style="background-color:#FFFFFF; text-align:center">51</td><td style="background-color:#FFFFFF; text-align:center">z</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">1</td><td style="background-color:#FFFFFF; text-align:center">B</td><td style="background-color:#FFFFFF; text-align:center">18</td><td style="background-color:#FFFFFF; text-align:center">S</td><td style="background-color:#FFFFFF; text-align:center">35</td><td style="background-color:#FFFFFF; text-align:center">j</td><td style="background-color:#FFFFFF; text-align:center">52</td><td style="background-color:#FFFFFF; text-align:center">0</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">2</td><td style="background-color:#FFFFFF; text-align:center">C</td><td style="background-color:#FFFFFF; text-align:center">19</td><td style="background-color:#FFFFFF; text-align:center">T</td><td style="background-color:#FFFFFF; text-align:center">36</td><td style="background-color:#FFFFFF; text-align:center">k</td><td style="background-color:#FFFFFF; text-align:center">53</td><td style="background-color:#FFFFFF; text-align:center">1</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">3</td><td style="background-color:#FFFFFF; text-align:center">D</td><td style="background-color:#FFFFFF; text-align:center">20</td><td style="background-color:#FFFFFF; text-align:center">U</td><td style="background-color:#FFFFFF; text-align:center">37</td><td style="background-color:#FFFFFF; text-align:center">l</td><td style="background-color:#FFFFFF; text-align:center">54</td><td style="background-color:#FFFFFF; text-align:center">2</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">4</td><td style="background-color:#FFFFFF; text-align:center">E</td><td style="background-color:#FFFFFF; text-align:center">21</td><td style="background-color:#FFFFFF; text-align:center">V</td><td style="background-color:#FFFFFF; text-align:center">38</td><td style="background-color:#FFFFFF; text-align:center">m</td><td style="background-color:#FFFFFF; text-align:center">55</td><td style="background-color:#FFFFFF; text-align:center">3</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">5</td><td style="background-color:#FFFFFF; text-align:center">F</td><td style="background-color:#FFFFFF; text-align:center">22</td><td style="background-color:#FFFFFF; text-align:center">W</td><td style="background-color:#FFFFFF; text-align:center">39</td><td style="background-color:#FFFFFF; text-align:center">n</td><td style="background-color:#FFFFFF; text-align:center">56</td><td style="background-color:#FFFFFF; text-align:center">4</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">6</td><td style="background-color:#FFFFFF; text-align:center">G</td><td style="background-color:#FFFFFF; text-align:center">23</td><td style="background-color:#FFFFFF; text-align:center">X</td><td style="background-color:#FFFFFF; text-align:center">40</td><td style="background-color:#FFFFFF; text-align:center">o</td><td style="background-color:#FFFFFF; text-align:center">57</td><td style="background-color:#FFFFFF; text-align:center">5</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">7</td><td style="background-color:#FFFFFF; text-align:center">H</td><td style="background-color:#FFFFFF; text-align:center">24</td><td style="background-color:#FFFFFF; text-align:center">Y</td><td style="background-color:#FFFFFF; text-align:center">41</td><td style="background-color:#FFFFFF; text-align:center">p</td><td style="background-color:#FFFFFF; text-align:center">58</td><td style="background-color:#FFFFFF; text-align:center">6</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">8</td><td style="background-color:#FFFFFF; text-align:center">I</td><td style="background-color:#FFFFFF; text-align:center">25</td><td style="background-color:#FFFFFF; text-align:center">Z</td><td style="background-color:#FFFFFF; text-align:center">42</td><td style="background-color:#FFFFFF; text-align:center">q</td><td style="background-color:#FFFFFF; text-align:center">59</td><td style="background-color:#FFFFFF; text-align:center">7</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">9</td><td style="background-color:#FFFFFF; text-align:center">J</td><td style="background-color:#FFFFFF; text-align:center">26</td><td style="background-color:#FFFFFF; text-align:center">a</td><td style="background-color:#FFFFFF; text-align:center">43</td><td style="background-color:#FFFFFF; text-align:center">r</td><td style="background-color:#FFFFFF; text-align:center">60</td><td style="background-color:#FFFFFF; text-align:center">8</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">10</td><td style="background-color:#FFFFFF; text-align:center">K</td><td style="background-color:#FFFFFF; text-align:center">27</td><td style="background-color:#FFFFFF; text-align:center">b</td><td style="background-color:#FFFFFF; text-align:center">44</td><td style="background-color:#FFFFFF; text-align:center">s</td><td style="background-color:#FFFFFF; text-align:center">61</td><td style="background-color:#FFFFFF; text-align:center">9</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">11</td><td style="background-color:#FFFFFF; text-align:center">L</td><td style="background-color:#FFFFFF; text-align:center">28</td><td style="background-color:#FFFFFF; text-align:center">c</td><td style="background-color:#FFFFFF; text-align:center">45</td><td style="background-color:#FFFFFF; text-align:center">t</td><td style="background-color:#FFFFFF; text-align:center">62</td><td style="background-color:#FFFFFF; text-align:center">+</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">12</td><td style="background-color:#FFFFFF; text-align:center">M</td><td style="background-color:#FFFFFF; text-align:center">29</td><td style="background-color:#FFFFFF; text-align:center">d</td><td style="background-color:#FFFFFF; text-align:center">46</td><td style="background-color:#FFFFFF; text-align:center">u</td><td style="background-color:#FFFFFF; text-align:center">63</td><td style="background-color:#FFFFFF; text-align:center">/</td></tr><tr><td style="background-color:#FFFFFF; text-align:center">13</td><td style="background-color:#FFFFFF; text-align:center">N</td><td style="background-color:#FFFFFF; text-align:center">30</td><td style="background-color:#FFFFFF; text-align:center">e</td><td style="background-color:#FFFFFF; text-align:center">47</td><td style="background-color:#FFFFFF; text-align:center">v</td><td style="background-color:#FFFFFF; text-align:center"> </td><td style="background-color:#FFFFFF; text-align:center"> </td></tr><tr><td style="background-color:#FFFFFF; text-align:center">14</td><td style="background-color:#FFFFFF; text-align:center">O</td><td style="background-color:#FFFFFF; text-align:center">31</td><td style="background-color:#FFFFFF; text-align:center">f</td><td style="background-color:#FFFFFF; text-align:center">48</td><td style="background-color:#FFFFFF; text-align:center">w</td><td style="background-color:#FFFFFF; text-align:center"> </td><td style="background-color:#FFFFFF; text-align:center"> </td></tr><tr><td style="background-color:#FFFFFF; text-align:center">15</td><td style="background-color:#FFFFFF; text-align:center">P</td><td style="background-color:#FFFFFF; text-align:center">32</td><td style="background-color:#FFFFFF; text-align:center">g</td><td style="background-color:#FFFFFF; text-align:center">49</td><td style="background-color:#FFFFFF; text-align:center">x</td><td style="background-color:#FFFFFF; text-align:center"> </td><td style="background-color:#FFFFFF; text-align:center"> </td></tr><tr><td style="background-color:#FFFFFF; text-align:center">16</td><td style="background-color:#FFFFFF; text-align:center">Q</td><td style="background-color:#FFFFFF; text-align:center">33</td><td style="background-color:#FFFFFF; text-align:center">h</td><td style="background-color:#FFFFFF; text-align:center">50</td><td style="background-color:#FFFFFF; text-align:center">y</td><td style="background-color:#FFFFFF; text-align:center"> </td><td style="background-color:#FFFFFF; text-align:center"> </td></tr></tbody></table>
2.Base64的优势。
编码解码速度快。
具有一定的加密效果。
实现简单。
编码解码速度快。
3.实现原理。
Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,因此, 转换后的字节一定会落在区间[0-64)当中,故此可以找到对应基本字符表示此字节,转换后的字符串理论上将要比原来的长1/3。
我们来看一个例子。
转换前:10101111 01101011 11001101
转换后:00101011 00110110 00101111 00001101
编码转换规则:
用指定的编码对字符串进行解码,得到解码后的字节数组。
按照规则把每3个字节转换为4个Base64基本字符。
处理最后的字节
剩余的字节为0,编码转换结束。
剩余的字节为1,把当前字节按照规则转换为Base64前两个字符,后面两位用'='补齐,编码转换结束。
剩余的字节为1,把当前字节按照规则转换为Base64前三个字符,最后一位用'='补齐,编码转换结束。
得到编码后的Base64 String。
解码转换规则:
准备好需要解码的Base64 String。
每4个一组,转换为对应的3个字节。
处理最后剩余的字符。
得到解码后的字节数组。
4.通用的编码传输解决方案。
使用UTF-8对需要传输的String进行编码,得到编码后的字节数组。
用Base64对字节数组进行编码,得到Base64 String。
传输编码后的Base64 String。
接收到传输到字节数组, 如果是字节数组,用本地编码对其进行解码即可,得到Base64 String。
用Base64对 Base64 String 进行解码,得到字节数组。
用UTF-8对字节数组进行解码,得到最终被传输的String。
分享到:
相关推荐
在这个特定的场景中,我们关注的是如何在LabVIEW中处理图片,包括图片的缩放、Base64编码和解码。 1. **图片缩放**: 在LabVIEW中,你可以使用图像处理库来实现图片的缩放功能。这个库提供了各种图像操作函数,...
1. **Base64解析**:接收Base64编码的字符串,根据Base64字符集将每个字符转换回6位的二进制数。 2. **组合二进制数据**:将4个6位的二进制数组合成3个8位的字节,注意需要处理末尾的填充字符"="。 3. **数据恢复*...
Base64编码基于64个字符的字符集,这个字符集包括26个小写字母、26个大写字母、10个数字以及两个特殊字符“+”和“/”。每个64个字符代表一个6位的二进制数,这意味着每个64字符可以表示2^6 = 64种不同的值。由于...
Base64编码是一种在网络上传输二进制数据的文本编码方式,主要应用于电子邮件、网页编码等领域,确保数据在传输过程中的安全性和可读性。它将任意二进制数据转换成可打印的ASCII字符,避免了非ASCII字符在传输过程中...
Base64编码是一种在互联网上常见的数据编码方式,主要用于在不支持二进制传输的环境(如邮件系统)中传输二进制数据。它将任意的二进制数据转化为可打印的ASCII字符序列,以便在文本格式下进行传输和存储。这种编码...
在IT领域,Base64是一种常见的编码方式,用于将二进制数据转化为可以在电子邮件系统、文本文件等中安全传输的ASCII字符串。C语言是编程语言的基础,被广泛应用于系统编程和嵌入式开发,因此一个C语言实现的Base64...
在Base64编码中,每个3个字节的二进制数据块会被转换为4个Base64字符。 Base64编码的主要原理是将每3个8位字节(24位)的数据分成4个6位组(每个6位可以表示0-63的十进制数),然后将这些数值映射到Base64字符集中...
在IT行业中,Base64是一种常见的数据编码方式,它将任意二进制数据转换为可打印的ASCII字符,常用于在网络上传输包含非ASCII字符的数据,如图片或PDF等。在Java和JavaScript中,Base64编码和解码是两个重要的功能,...
在IT行业中,Base64编码是一种常见的数据编码方式,它将二进制数据转化为可打印的ASCII字符,常用于在网络上传输图片、音频或视频等非文本数据。易语言作为一款中国本土化的编程语言,提供了处理Base64编码的功能。...
Base64编码是一种编码方法,它将二进制数据转换为ASCII字符串格式。这种编码方式主要适用于编码那些无法直接通过文本格式传输的数据,比如图片、音频、视频等二进制文件。Base64编码通过把每3个字节的二进制数据转换...
Base64编码是一种在网络上传输二进制数据时常用的编码方式,它将任意二进制数据转换成可打印的ASCII字符序列。这种编码方法最初是为了在电子邮件系统中传输非ASCII字符而设计的,如今在很多场景下都有应用,如图片...
注意,虽然这里介绍的是`javabase64-1.3.1.jar`库,但Java 8及更高版本已经内置了`java.util.Base64`类,提供了一套标准的Base64编码和解码接口,因此你也可以选择使用Java自带的API,具体用法类似。 总的来说,...
本篇将深入探讨如何在C/C++环境中,利用从Chromium库中提取的代码进行Base64的编码与解码。 首先,Base64编码的原理是将每3个字节(24位)的数据转换为4个6位的字符,然后将这4个6位字符对应到Base64的字符集(包括...
**BASE64编码方法** BASE64是一种广泛用于网络数据传输和存储的编码方式,它将任意二进制数据转换成可打印的ASCII字符序列。这种方法最初被设计用来在电子邮件系统中传输非ASCII字符,现在则被应用于各种场景,如在...
Base64编码的过程是这样的:首先,将二进制数据按每3个字节分为一组(24位),然后将这24位数据转换成4个6位的二进制数,每个6位对应Base64字符集中的一位。因为6位最多能表示64种状态,所以正好可以对应64个不同的...
QT图片Base64编码与解码是C++编程中一种常见的技术,特别是在处理网络传输或者存储图片数据时。Base64是一种将二进制数据转换为可打印ASCII字符的编码方式,它通过特定的算法将每3个字节的数据转换为4个ASCII字符,...
Base64编码是一种将二进制数据转换为可打印ASCII字符的编码方式,常用于在网络上传输非ASCII字符,如图片或PDF等。在前端开发中,Base64编码经常被用于将图片转换为字符串,以便嵌入到HTML或者CSS中。在后端,Base64...
在IT领域,Base64是一种用于在网络上传输和存储非ASCII字符的数据编码方式。它将任意二进制数据转换为可打印的ASCII字符序列,主要应用于电子邮件、HTTP传输以及XML文档中。C++作为一门通用的编程语言,也支持Base64...
"将图片进行Base64编码后传输"是一种高效且便捷的方式,它允许我们直接将图片数据嵌入到文本格式中,方便在网络中传递。这种技术广泛应用于JSON API、HTML页面以及任何不支持二进制数据流的系统。 Base64是一种编码...
需要注意的是,这段代码没有提供完整的Base64解码逻辑,实际的`decodeBase64`函数需要实现Base64编码的解码算法,这通常涉及到将Base64字符映射回它们代表的二进制值。 总的来说,这个示例展示了JavaScript在处理二...