精华内容
下载资源
问答
  • Base64一般用于在HTTP协议...什么是可打印字符?在ASCII码中规定,0~31、127这33个字符属于控制字 符,32~126这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。 ...
    	Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为
    	字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。什么是可打印字符?在ASCII码中规定,0~31、127这33个字符属
    	于控制字符,32~126这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。
    

    基于上述文字,下面是我对base64编码的分析理解

    (注:以下只考虑base64涉及的编码解码过程,中间过程不予探讨)

    • 目的:HTTP是文本协议,我们需要用字符串来表示二进制数据以便HTTP协议解析传输,并且满足传输前后数据一致。
    • 约束:传输的字符受限(95个),所以必须使用这95个字符以内的数据来表示二进制数据。
    • 思路:寻找一种合适的编码解码方案。
      例如:
      编码(encode)时,将二进制数据 '01 编码成字符 ‘a’。
      解码(decode)时,将字符串 ‘a’ 解码成二进制数据 ‘01’。

    条件推导:

    • 为了编码解码的正确性,我们必须保证二进制单位数据和编码字符的一一映射。
    • 由于任意字符类型数量,我们都可以缩小/扩大二进制数据编码单位来与之对应,而字符数量被约束在95个之下,所以我们只能缩小二进制数据编码单位来减小字符串种类来保证一一映射关系。

    由此我们必须缩小二进制数据编码单位至95或以下,且因为二进制数据由0/1组成,其编码单位只能是2的指数,所以我们只能选择七位(26 < 95 < 27)以下二进制数据来作为二进制数据编码单位,也就是6/5/4/3/2/1位二进制来和26/25/24/23/22/21种字符来进行一一映射。

    也就是说,我们必须选择[1,6]以内的二进制位数,如果我们选择每1位二进制都编码成一个字符,那么编码结果只有二种字符类型,编码解码效率相当快。但是每个字节就会被编码成八个字符,加大了传输量。为了减少传输量,我们选择每6位编码成一个字符,那么编码结果就有64种字符类型,每个字节使用1.33~个字符表示,每3个字节使用4个字符表示,最大化的减小了传输量,这也就是base64的由来。当我们解码时,会把每个字符解码成对应的6位二进制数据,进而实现了编码前和编码解码后数据的一致性。

    文首文字来源于

    展开全文
  • 是什么? 这是Base32H的编码器和解码器的第二个参考实现,这是一种新的(-ish)base-32数字表示形式,是作为NPM的软件包编写的(但应在任何合理的现代Javascript实现中使用)。 如何安装? 在您的项目目录中运行...
  • 为了防止这种情况的出现,出现了Base16,Base32,Base64编码方式.我们知道计算机传输的单位字节,也就是8个比特位,按照一个字节编码的方式结果就有256种状态(每个比特位0或者1两种状态,8位就是=256),ASCII编码将8个...

    简介

    在网络传入字符串过程中,如果编码方式是基于ASCII,那么会造成什么问题?比如:url地址中存在"/"(如:www.csdn.net/nav/ai),字符串中编码中也存在"/",这样就会出现错误地址解析.为了防止这种情况的出现,出现了Base16,Base32,Base64编码方式.我们知道计算机传输的单位是字节,也就是8个比特位,按照一个字节编码的方式结果就有256种状态(每个比特位0或者1两种状态,8位就是2^{8}=256),ASCII编码是将8个比特位中最高位置为0,所以总共可表示128个字符(即2^{7}=128).为了避免冲突,去掉一些特殊字符,重新编码.例如Base16编码,编码后的字符只会在(0~9,A~F)中,Base32编码后字符就会在(A~Z, 2~7)中以及填充符"="中出现.

    Base16编码

    Base16编码就是将ASCII字符集中可打印的字符(数字0~9和字母A~F)对应的二进制字节数据进行编码,编码的方式:

    1.将数据(根据ASCII编码,UTF-8编码等)转成对应的二进制数,不足8比特位高位补0.然后将所有的二进制全部串起来,4个二进制位为一组,转化成对应十进制数.

    2.根据十进制数值找到Base16编码表里面对应的字符.Base16是4个比特位表示一个字符,所以原始是1个字节(8个比特位)刚好可以分成两组,也就是说原先如果使用ASCII编码后的一个字符,现在转化成两个字符.数据量是原先的2倍.

                      Base16编码表

    案例:将"ILU"字符串,根据ASCII编码得到对应的二进制,将所有二进制串起来,然后按4个二进制位分割,转化成十进制数值,根据Base16编码表得到编码"494C55",编码后的数据是原先的2倍.

    文本

    I

    L

    U

    ASCII编码

    73

    76

    85

    二进制位

    0

    1

    0

    0

    1

    0

    0

    1

    0

    1

    0

    0

    1

    1

    0

    0

    0

    1

    0

    1

    0

    1

    0

    1

    十进制数值

    4

    9

    4

    12

    5

    5

    Base16编码

    4

    9

    4

    C

    5

    5

    Base32编码

    与Base16编码区别的是,Base32使用了ASCII编码中可打印的32个字符(大写字母A~Z和数字2~7)对任意字节数据进行编码.Base32将串起来的二进制数据按照5个二进制位分为一组,由于传输数据的单位是字节(即8个二进制位).所以分割之前的二进制位数是40的倍数(40是5和8的最小公倍数).如果不足40位,则在编码后数据补充"=",一个"="相当于一个组(5个二进制位),编码后的数据是原先的\frac{8}{5}倍.

                                                     Base32编码表

    案例:"ILU"字符串根据Base32编码进行编码,先根据ASCII编码得到对应字符编码值以及对应二进制,将所有二进制串起来,然后按照5个二进制位为一组分割 ,得到十进制值=>找到Base32编码表找到对应的字符.案例总共分割成了5组(25位),还差三组(15位).在末尾补充3个"=".经过Base32编码后最终值应是"JFGFK===".

    文本

    I

    L

    U

    ASCII编码

    73

    76

    85

    二进制位

    0

    1

    0

    0

    1

    0

    0

    1

    0

    1

    0

    0

    1

    1

    0

    0

    0

    1

    0

    1

    0

    1

    0

    1

    十进制数值

    9

    5

    6

    5

    10

    Base32编码

    J

    F

    G

    F

    K

    Base64编码

    Base64编码使用了ASCII编码中64个可打印的字符(大写字母A~Z,小写字母a~z,数字0~9以及"+","/")将任意字节数据进行编码.Base64编码将串起来的二进制以6位进行分割.所以分切之前的二进制位数应该是24的倍数(即6,8的最小公倍数).如果不足24位,则在编码后数据后面添加"=",一个"="想当于6个二进制位.数据量是原先的\frac{4}{3}倍.     (因为path和url中不能出现’/’,所以用 ‘-’ , ‘_’ 来替代’+’ , ‘/’)

                                                  Base64编码表

    案例:"ILU"字符串编码,前面的过程与Base16编码,Base32编码一样,区别是将串起来的二进制按6位分为一组.得到4组(24位).所以末尾不用补充"=",所以经过Base64编码后的结果是"SUxV".

    文本

    I

    L

    U

    ASCII编码

    73

    76

    85

    二进制位

    0

    1

    0

    0

    1

    0

    0

    1

    0

    1

    0

    0

    1

    1

    0

    0

    0

    1

    0

    1

    0

    1

    0

    1

    十进制数值

    18

    20

    49

    21

    Base64编码

    S

    U

    x

    V

    总结

    1.Base16编码是包含了数字(0~9)和大写字母(A~F),Base32编码与Base64编码最大区别是前者没有小写字母.Base32编码可以用于文件系统的名称(不区分大小情况).而Base64编码后数据量相比原先不是增加很多,可以用于网络传输.(比如下载链接)

    展开全文
  • 密码系列-Base32

    2020-11-15 13:00:27
    一、什么是Base32 Base32编码使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符,可以方便地由人类使用并由计算机处理。 二、Base32...

    Base32加密算法

    一、什么是Base32

    Base32编码是使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符,可以方便地由人类使用并由计算机处理。

    二、Base32算法原理

    Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分,并将每组二进制值转换成十进制来对应32个可打印字符中的一个。

    由于数据的二进制传输是按照8比特一组进行(即一个字节),因此Base32按5比特切分的二进制数据必须是40比特的倍数(5和8的最小公倍数)。例如输入单字节字符“%”,它对应的二进制值是“100101”,前面补两个0变成“00100101”(二进制值不足8比特的都要在高位加0直到8比特),从左侧开始按照5比特切分成两组:“00100”和“101”,后一组不足5比特,则在末尾填充0直到5比特,变成“00100”和“10100”,这两组二进制数分别转换成十进制数,通过上述表格即可找到其对应的可打印字符“E”和“U”,但是这里只用到两组共10比特,还差30比特达到40比特,按照5比特一组还需6组,则在末尾填充6个“=”。填充“=”符号的作用是方便一些程序的标准化运行,大多数情况下不添加也无关紧要,而且,在URL中使用时必须去掉“=”符号。

    三、较Base16和Base64的优缺点

    与Base64相比,Base32具有许多优点:

    • 适合不区分大小写的文件系统,更利于人类口语交流或记忆。
    • 结果可以用作文件名,因为它不包含路径分隔符 “/”等符号。
    • 排除了视觉上容易混淆的字符,因此可以准确的人工录入。(例如,RFC4648符号集忽略了数字“1”、“8”和“0”,因为它们可能与字母“I”,“B”和“O”混淆)。
    • 排除填充符号“=”的结果可以包含在URL中,而不编码任何字符。

    Base32也比Base16有优势:

    • Base32比Base16占用的空间更小。(1000比特数据Base32需要200个字符,而Base16则为250个字符)

    Base32的缺点:

    • Base32比Base64多占用大约20%的空间。因为Base32使用8个ASCII字符去编码原数据中的5个字节数据,而Base64是使用4个ASCII字符去编码原数据中的3个字节数据。
    展开全文
  • Base32编码转换

    2020-05-22 11:22:39
    为了防止这种情况的出现,出现了Base16,Base32,Base64编码方式.我们知道计算机传输的单位字节,也就是8个比特位,按照一个字节编码的方式结果就有256种状态(每个比特位0或者1两种状态,8位就是=256),ASCII编码将8个...

    在网络传入字符串过程中,如果编码方式是基于ASCII,那么会造成什么问题?比如:url地址中存在"/"(如:www.csdn.net/nav/ai),字符串中编码中也存在"/",这样就会出现错误地址解析.为了防止这种情况的出现,出现了Base16,Base32,Base64编码方式.我们知道计算机传输的单位是字节,也就是8个比特位,按照一个字节编码的方式结果就有256种状态(每个比特位0或者1两种状态,8位就是2^{8}=256),ASCII编码是将8个比特位中最高位置为0,所以总共可表示128个字符(即2^{7}=128).为了避免冲突,去掉一些特殊字符,重新编码.例如Base16编码,编码后的字符只会在(0~9,A~F)中,Base32编码后字符就会在(A~Z, 2~7)中以及填充符"="中出现.

    Base16编码

    Base16编码就是将ASCII字符集中可打印的字符(数字0~9和字母A~F)对应的二进制字节数据进行编码,编码的方式:

    1.将数据(根据ASCII编码,UTF-8编码等)转成对应的二进制数,不足8比特位高位补0.然后将所有的二进制全部串起来,4个二进制位为一组,转化成对应十进制数.

    2.根据十进制数值找到Base16编码表里面对应的字符.Base16是4个比特位表示一个字符,所以原始是1个字节(8个比特位)刚好可以分成两组,也就是说原先如果使用ASCII编码后的一个字符,现在转化成两个字符.数据量是原先的2倍.

                                                                                            Base16编码表

    案例:将"ILU"字符串,根据ASCII编码得到对应的二进制,将所有二进制串起来,然后按4个二进制位分割,转化成十进制数值,根据Base16编码表得到编码"494C55",编码后的数据是原先的2倍.

    文本

    I

    L

    U

    ASCII编码

    73

    76

    85

    二进制位

    0

    1

    0

    0

    1

    0

    0

    1

    0

    1

    0

    0

    1

    1

    0

    0

    0

    1

    0

    1

    0

    1

    0

    1

    十进制数值

    4

    9

    4

    12

    5

    5

    Base16编码

    4

    9

    4

    C

    5

    5

    Base32编码

    与Base16编码区别的是,Base32使用了ASCII编码中可打印的32个字符(大写字母A~Z和数字2~7)对任意字节数据进行编码.Base32将串起来的二进制数据按照5个二进制位分为一组,由于传输数据的单位是字节(即8个二进制位).所以分割之前的二进制位数是40的倍数(40是5和8的最小公倍数).如果不足40位,则在编码后数据补充"=",一个"="相当于一个组(5个二进制位),编码后的数据是原先的\frac{8}{5}倍.

                                                                                                 Base32编码表

    案例:"ILU"字符串根据Base32编码进行编码,先根据ASCII编码得到对应字符编码值以及对应二进制,将所有二进制串起来,然后按照5个二进制位为一组分割 ,得到十进制值=>找到Base32编码表找到对应的字符.案例总共分割成了5组(25位),还差三组(15位).在末尾补充3个"=".经过Base32编码后最终值应是"JFGFK===".

    文本

    I

    L

    U

    ASCII编码

    73

    76

    85

    二进制位

    0

    1

    0

    0

    1

    0

    0

    1

    0

    1

    0

    0

    1

    1

    0

    0

    0

    1

    0

    1

    0

    1

    0

    1

    十进制数值

    9

    5

    6

    5

    10

    Base32编码

    J

    F

    G

    F

    K

    Base64编码

    Base64编码使用了ASCII编码中64个可打印的字符(大写字母A~Z,小写字母a~z,数字0~9以及"+","/")将任意字节数据进行编码.Base64编码将串起来的二进制以6位进行分割.所以分切之前的二进制位数应该是24的倍数(即6,8的最小公倍数).如果不足24位,则在编码后数据后面添加"=",一个"="想当于6个二进制位.数据量是原先的\frac{4}{3}倍.

                                                                                               Base64编码表

    案例:"ILU"字符串编码,前面的过程与Base16编码,Base32编码一样,区别是将串起来的二进制按6位分为一组.得到4组(24位).所以末尾不用补充"=",所以经过Base64编码后的结果是"SUxV".

    文本

    I

    L

    U

    ASCII编码

    73

    76

    85

    二进制位

    0

    1

    0

    0

    1

    0

    0

    1

    0

    1

    0

    0

    1

    1

    0

    0

    0

    1

    0

    1

    0

    1

    0

    1

    十进制数值

    18

    20

    49

    21

    Base64编码

    S

    U

    x

    V

    总结

    1.Base16编码是包含了数字(0~9)和大写字母(A~F),Base32编码与Base64编码最大区别是前者没有小写字母.Base32编码可以用于文件系统的名称(不区分大小情况).而Base64编码后数据量相比原先不是增加很多,可以用于网络传输.(比如下载链接)

    展开全文
  • Base64与Base32编码

    2013-06-24 00:23:05
    1、什么是Base64 Base64一种基于64个可打印字符来表示二进制数据的表示方法。首先将字符串转化为对应的ASCII码,然后转化为二进制,字节占8位,Base64编码将3个8位字节转化为4个6位单元,然后在这6位前加两个0,...
  • md5 在线测试工具:https://www.cmd5.com/ ... md5 base64使用场景: ... base64 公开的代码图片文件加密 url加密 ...MD5:一种不可逆的摘要算法,用于生成摘要,无法逆破解到原文。常用的生成32位摘要,用于验证...
  • 本文讲述什么是加密、加密解密算法入门、自定义加密算法实现、CS免杀使用的异或算法、特工摩斯密码,以及Ladon8.0加密解密算法演示。 什么是加密 出于信息保密的目的,在信息传输或存储中,采用密码技术对需要保密的...
  • ASCII码的范围0-127,其中0-31和127这33个字符属于控制字符,剩下的32-126这95个字符属于可打印字符,包含了数字、大小写字母和常用符号等。他们与十进制的对应关系如下: 这里面的某些字节在某些传输渠道中...
  • 漫画:什么是Base64算法?原创: 玻璃猫 程序员小灰 2017-09-22ValueCharValueCharValueCharValueChar0A16Q32g48w1B17R33h49x2C18S34i50y3D19T35j51z4E20U36k5205F21V37l5316G22W38m5427H23X39n5538I24Y40o5649...
  • 转载自 玻璃猫 程序员小灰   Value Char   Value Char   Value Char   ... 32 g 48 w 1 B 17 R 33 h 49 ...
  • Base64/32/16编码

    千次阅读 2017-05-27 17:23:42
     Base64网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-...
  • 转载自&amp;nbsp;玻璃猫 程序员小灰 &amp;nbsp; Value Char &amp;nbsp; Value Char &amp;nbsp; Value ... 32 g 48
  • STM32库函数是什么意思呢?和寄存器有什么联系呢(上)? ** 1.首先我们打开任意一个Init()函数,这里以GPIO为例void GPIO_Init(GPIO_TypeDef GPIOx, GPIO_InitTypeDef GPIO_InitStruct);** 2.索引到第一个变量GPIO_...
  • BASE64原理

    2021-03-21 14:43:29
    BASE64原理 文章目录BASE64原理一、base64是什么?...Base64编码之所以称为Base64,是因为其使用64个字符来对任意数据进行编码,同理有Base32、Base16编码。标准Base64编码使用的64个字符为: 有点特殊的是最后两个
  • base64

    2019-02-14 18:30:36
    base64 有些协议文本协议,但是需要传输二进制数据。...base64只选用了其中的64个字符,为什么选用64个呢,这个算法实现有关联的。字符肯定和数据联系起来的,为了能表示64个字符,需要6位的二进制数据...
  • Base64基本原理

    2020-12-16 19:53:12
    Base64编码之所以称为Base64,因为其使用64个字符来对任意数据进行编码,同理有Base32、Base16编码。标准Base64编码使用的64个字符为: 有点特殊的最后两个字符,因对最后两个字符的选择不同,Base64编码又有...
  • Base64编码探究

    2018-11-12 17:11:06
    1.什么是Base64 Base64一种基于64个可打印字符来表示二进制数据的编码方式,从二进制数据到...Base64编码之所以称为Base64,因为其使用64个字符来对任意数据进行编码,同理有Base32、Base16编码。标准Base6...
  • Base-x 编码的奥秘

    2021-02-19 10:14:45
    Base Encoding 一组二进制转文本的编码模式(Encoding Scheme),常见的有 Base64、Base58、Base32、Base16。大家不仅疑惑为什么需要二进制转文本这种编码模式呢?常见误解之一就是既然所有的编码最终都会变成 0 ...
  • hi,大家好,我开发者...虽然我们在工作中使用最多的Base64,但是Base家族可不止只有Base64,除了Base64之外,Base家族还有Base32和Base16。 我们都知道ASCII 编码,ASCII 编码用256(2的8次方)个字符,对二进
  • Base64编码方式

    2020-02-13 23:35:26
    Base64网络上最常见的用于传输8Bit字节码的编码方式之一,一种基于64个可打印字符来表示二...什么是可打印字符? 在ASCII码中规定,0 ~ 31、127这33个字符属于控制字符,32~126这95个字符属于可打印字符,也就是...
  • 编码算法-Base64

    2017-10-23 18:29:00
    Base64一种编码算法,因为这种算法只支持64个[可打印字符],所以叫做Base64。 为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。 为...
  • 是什么? BaseEmoji是一种将文本编码为表情符号的方法。 就像编码为base64一样。 您可以将foobar编码为:pouting_cat::triangular_flag::shaved_ice::chequered_flag::maple_leaf::american_football::horizontal_...
  • CTF题库>base??

    千次阅读 2019-08-12 11:47:53
    什么这么像base32却不是!!! 明文的md5值为16478a151bdd41335dcd69b270f6b985 md5的值可以 对YMFZZTY0D3RMD3RMMTIZ进行base64解密得到(但是题目为什么还要给呢???) 直接对 md5解密即可 在线网站...
  • 前端 - base64原理浅析

    2019-06-21 18:36:57
    什么是Base64编码 Base64 就是指64个字符,包括大小写字母[A-Z、a-z],阿拉伯数字[0-9],还有两个字符[+、/],两外还有一个表示后缀的字符 [ = ],Base64就是指只能传输这64个字符 Base64编码原理 先提一下ASCII码...
  • -Stm32f746g-Disco开发板接OV9655摄像头 -usb连接线接Windows PC机 -开发板的usb__hs接连接线,板子跳线也接到Usb_hs端子 -St_link连接另外一根usb线到PC机 ![图片说明]...
  • 其实也很简单,就是MD5+BASE64,要问16还是32的MD5,其实是32的,只不过加密后的32位长的字符串要把他看成另一个字符串的HEX,然后将那个字符串用BASE64编码下,关键VB里那个字符串会显示为"???",就是乱码,请...
  • 介绍:Base64网络上最常见的用于传输8Bit字节码的编码方式之一,Base64...什么是可打印字符?在ASCII码中规定,0-31、127这33个字符属于控制字符,32-126这95个字符属于可打印字符,也就是说网络传输只能传输这95个字

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 364
精华内容 145
关键字:

base32是什么