系列一:base64加密
一、base64的缘起
Base64是一种编码算法,它可以将任何字符转换为由拉丁字母、数字、加号和斜杠组成的字符串。在1987年的PEM(Privacy-enhanced Electronic Mail)协议中首次提及到了Base64算法,最初,该算法被命名为“可打印编码”,直到几年后的1992年6月,RFC 1341才将其定义为“Base64”。因为这个算法使用64个基本字符来将其他要被编码的字符转换到这64个字符集中,所以最后被命名为Base64。
Base64的历史由来已久,早期一个字节该使用多少位的二进制来表示还没有形成固定标准时,存在各种用7位、6位甚至3位字节来表示一个字节的情况。后来当8位编码被批准为标准时,许多系统使用旧的编码,不支持“新标准”,这导致一些数据在新旧系统之间的传输过程中丢失。例如,邮件服务器在发送邮件时,可能会丢弃第8位编码。此外,邮件服务器还存在另一个问题——它们只能发送文本,而不能发送二进制数据(如图像、视频、档案)。因此,Base64就被发明出来解决这些问题。尽管随着时间的推移,也有其他二进制转文本的编码也被开发出来了,但是由于其的简单性、效率和可移植性,Base64成为了最流行的编码。
如今Base64的使用场景也非常丰富,除了在信息传输中用来做编码转换,也经常被用作一些网站的信息加密中,一定程度上能起到保护信息的作用。
二、base64的原理
2.1、base64的字符集
Base64字符集中包含64个基本ASCII字符,通过将数据映射转换成这64个字符实现编码。Base64字符集中的字符包含以下四类,即大写字母A-Z、小写字母a-z、数字0-9以及符号"+"、"/",当然还有一个特殊字符“=”用于在编码过程中进行补位,所以实际上Base64编码后的内容最多会包含65个字符。
大写字母(索引0 ~ 25):ABCDEFGHIJKLMNOPQRSTUVWXYZ
小写字母(索引26-51):abcdefghijklmnopqrstuvwxyz
数字(索引52-61):0123456789
特殊符号(索引62-63):+/
base64的字符集:
2.2、编码过程
假设我们要对字符串:
ABC
进行编码,首先需要找到每个字母对应的ASCII码值,也就是ÿ