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算法原理:
- 将原始数据每三个字节作为一组,每个字节是8个bit,所以一共是 24 个 bit
- 将 24 个 bit 分为四组,每组 6 个 bit
- 在每组前面加补 00,将其补全成四组8个bit
- 根据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字符末尾会看到=
,有时1个,有时2个
通过上面的我们知道了Base64编码过程是3个字符一组的进行,如果原文长度不是3的倍数怎么办呢? 例如我们的原文为Ma
,它不够3个,那么只能在编码后的字符串中补=
了。缺一个字符补一个,缺两个补两个即可,所以有时候你会看见base64字符串结尾有1个或者2个=
。