Base64编码-算法特别的理解

Base64编码-算法特别的理解_第1张图片

Base64

在DES加密和AES加密的过程中,加密的编码会出现负数,在ascii码表中找不到对应的字符,就会出现乱码。为了解决乱码的问题,一般结合base64使用

所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、小写a到z、数字0到9、“+”和“/”

Base58是Bitcoin(比特币)中使用的一种编码方式,主要用于产生Bitcoin的钱包地址 相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"i",以及"+"和"/"符号

Base64特点:

  • Base64是网络上最常见的用于传输8bit字节码的可读性编码算法之一
  • 可读性编码算法不是为了保护数据的安全性,而是为了可读性
  • 可读性编码不改变信息内容,只改变信息内容的表现形式

Base64算法原理:

  1. 将原始数据每三个字节作为一组,每个字节是8个bit,所以一共是 24 个 bit
  2. 将 24 个 bit 分为四组,每组 6 个 bit
  3. 在每组前面加补 00,将其补全成四组8个bit
  4. 根据Base64码表得到扩展后每个字节的对应符号

base64算法原理,特别的理解

抽象的理解就是,对原始字符串削皮,削成两层,得到最内层的东西,再平均分成4组,最后再把削的两层皮贴回去,变成原来的模样

1.在整个原始字符串中每次拿出一组进行编译,一组三个字节

2.第一次削去英文字母的形式,露出ascii码形式

3.第二次削去ascii码的形式,露出二进制形式

4.再将这一组所有的二进制,平均分4小组,即每组6位

 5.最后针对每小组的6位编码,逆着原来的步骤,一步一步把皮贴回去,

就是将二进制形式变成十进制形式,再将十进制对照base64表,变成英文字母的形式

 上面的表格中是对Man进行编码,Man正好是3组8位的字符串

对于M,首先ascii编码是77,再将77转换成二进制形式,之后以6个字节为一组,分成4组

每组形成的编码对照base64对照表,写出编码后的字符串

Base64编码-算法特别的理解_第2张图片

 

有时我们会在Base64字符末尾会看到=,有时1个,有时2个

通过上面的我们知道了Base64编码过程是3个字符一组的进行,如果原文长度不是3的倍数怎么办呢? 例如我们的原文为Ma,它不够3个,那么只能在编码后的字符串中补=了。缺一个字符补一个,缺两个补两个即可,所以有时候你会看见base64字符串结尾有1个或者2个=

你可能感兴趣的:(java,开发语言)