`
elvis4139
  • 浏览: 146127 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Base64编码

 
阅读更多
一、  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">&nbsp;</td><td style="background-color:#FFFFFF; text-align:center">&nbsp;</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">&nbsp;</td><td style="background-color:#FFFFFF; text-align:center">&nbsp;</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">&nbsp;</td><td style="background-color:#FFFFFF; text-align:center">&nbsp;</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">&nbsp;</td><td style="background-color:#FFFFFF; text-align:center">&nbsp;</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编码base64解码

    在这个特定的场景中,我们关注的是如何在LabVIEW中处理图片,包括图片的缩放、Base64编码和解码。 1. **图片缩放**: 在LabVIEW中,你可以使用图像处理库来实现图片的缩放功能。这个库提供了各种图像操作函数,...

    易语言汇编base64编码

    Base64编码是一种在网络上传输二进制数据时常用的数据编码方式,它将任意二进制数据转化为可打印的ASCII字符,方便在网络协议如电子邮件中传输。 Base64编码的基本原理是将每3个8位字节(24位)的数据转换成4个6位...

    Base64编码解码工具

    Base64编码基于64个字符的字符集,这个字符集包括26个小写字母、26个大写字母、10个数字以及两个特殊字符“+”和“/”。每个64个字符代表一个6位的二进制数,这意味着每个64字符可以表示2^6 = 64种不同的值。由于...

    Base64编码解码工具成品+源码

    Base64编码是一种在网络上传输二进制数据的文本编码方式,主要应用于电子邮件、网页编码等领域,确保数据在传输过程中的安全性和可读性。它将任意二进制数据转换成可打印的ASCII字符,避免了非ASCII字符在传输过程中...

    文件转换为Base64编码

    Base64编码是一种在互联网上常见的数据编码方式,主要用于在不支持二进制传输的环境(如邮件系统)中传输二进制数据。它将任意的二进制数据转化为可打印的ASCII字符序列,以便在文本格式下进行传输和存储。这种编码...

    C语言base64编码解码库

    C语言是编程语言的基础,被广泛应用于系统编程和嵌入式开发,因此一个C语言实现的Base64编码解码库对于开发者来说非常有用。下面将详细介绍这个名为"C语言base64编码解码库"的资源。 该库是从GitHub上获取的,这...

    Base64编码解码工具V1.5

    描述中提到的"Base64编码解码工具V1.5"是一款实用软件,能够帮助用户对Base64编码的数据进行解码。在使用过程中,用户只需选择"Base64"编码选项,软件就会自动处理输入的Base64字符串,将其还原为原始的二进制数据。...

    易语言 base64编码转图片 如何 提高转换速度.zip

    在IT行业中,Base64编码是一种常见的数据编码方式,它将二进制数据转化为可打印的ASCII字符,常用于在网络上传输图片、音频或视频等非文本数据。易语言作为一款中国本土化的编程语言,提供了处理Base64编码的功能。...

    js 显示base64编码的二进制流网页图片

    Base64编码是一种编码方法,它将二进制数据转换为ASCII字符串格式。这种编码方式主要适用于编码那些无法直接通过文本格式传输的数据,比如图片、音频、视频等二进制文件。Base64编码通过把每3个字节的二进制数据转换...

    base64编码解码离线工具

    Base64编码是一种在网络上传输二进制数据时常用的编码方式,它将任意二进制数据转换成可打印的ASCII字符序列。这种编码方法最初是为了在电子邮件系统中传输非ASCII字符而设计的,如今在很多场景下都有应用,如图片...

    Base64编码jar包

    在Java中,Base64编码常用于处理图片、证书、密钥等非文本内容。 `javabase64-1.3.1.jar` 是一个专门用于Base64编码和解码的Java库。这个jar包包含了处理Base64操作所需的所有类和方法,可以方便地集成到Java工程中...

    Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)

    首先,Base64编码的原理是将每3个字节(24位)的数据转换为4个6位的字符,然后将这4个6位字符对应到Base64的字符集(包括大小写字母、数字和两个特殊符号`+`和`/`)。对于不足3字节的数据,会在编码前补足0,以保证...

    BASE64编码方法

    **BASE64编码方法** BASE64是一种广泛用于网络数据传输和存储的编码方式,它将任意二进制数据转换成可打印的ASCII字符序列。这种方法最初被设计用来在电子邮件系统中传输非ASCII字符,现在则被应用于各种场景,如在...

    base64 编码与解码 中文完美支持

    中文字符在计算机中通常以多字节形式存储,因此在进行Base64编码时,需要特殊处理以确保中文字符能够正确无误地被编码和解码。"完美支持中文"意味着该Base64工具不仅能够处理ASCII字符,还能够正确处理UTF-8编码的...

    java和js相互base64编码解码

    在Java和JavaScript中,Base64编码和解码是两个重要的功能,用于处理这种编码格式。下面将详细阐述这两个编程语言中实现Base64编码和解码的方法。 首先,让我们关注Java。在Java 8及更高版本中,已经内置了`java....

    QT图片BAse64编码与解码

    QT图片Base64编码与解码是C++编程中一种常见的技术,特别是在处理网络传输或者存储图片数据时。Base64是一种将二进制数据转换为可打印ASCII字符的编码方式,它通过特定的算法将每3个字节的数据转换为4个ASCII字符,...

    Hex十六进制/Base64编码转换器

    同样,如果你收到了一个Base64编码的字符串,比如在邮件中,你可以通过该工具解码它,恢复其原始内容。 "HexBase64.exe"很可能是这个转换器的执行文件,它允许用户在Windows环境中运行这个工具。而".url"文件是...

    将图片进行Base64编码后传输

    "将图片进行Base64编码后传输"是一种高效且便捷的方式,它允许我们直接将图片数据嵌入到文本格式中,方便在网络中传递。这种技术广泛应用于JSON API、HTML页面以及任何不支持二进制数据流的系统。 Base64是一种编码...

    Base64编码和解码的应用(前后端程序)

    Base64编码是一种将二进制数据转换为可打印ASCII字符的编码方式,常用于在网络上传输非ASCII字符,如图片或PDF等。在前端开发中,Base64编码经常被用于将图片转换为字符串,以便嵌入到HTML或者CSS中。在后端,Base64...

    c++ base64 编码

    下面我们将详细探讨C++实现Base64编码的相关知识点。 首先,Base64的基本原理是将每3个字节(24位)的数据转换为4个Base64字符(每个字符6位),总共32位。由于Base64字符集有64个字符,包括大小写字母、数字以及"+...

Global site tag (gtag.js) - Google Analytics