Base64 指的是大写字母A到Z、小写字母a到z、数字0到9、符号"+“和”/"这64个字符,这64个字符作为一个基本字符集。然后其他所有符号都转换成这个字符集中的字符。
Base64 的转换方式可以分为四步:
- 将每三个字节作为一组,一共是24个二进制位;
- 将这24个二进制位分为四组,每个组有6个二进制位;
- 在每组前面加两个00,四组就一共扩展8个二进制位,一共就是32个二进制位,即四个字节;
- 根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。
Base64要求把每三个8bit的字节转换为四个6bit的字节(3 * 8 = 4 * 6 = 24),然后把6bit再添两位高位0,组成四个8bit的字节,也就是说,转换后的字符串理论上要比原来的长1/3。
Base64是用于传输8bit字节代码的编码方式之一,Base64编码可用于在Http环境下传输较长的标识信息。在其它应用程序中,也常常需要把二进制数据编码为适合放在URL中的形式,此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼直接看到。
标准的Base64不适合直接放在URL里传输,因为URL编码器会把标准Base64中的"+“和”/“字符变为如”%XX"的形式,而这些”%“号在存入数据库时还需要再进行转换,因为ANSI SQL中已将"%“号用作通配符。
为解决此问题,可采用一种用于URL的改进Base64,它不在末尾填充”=“号,将标准Base64中的”+“和”/“分别改成了” * ”和" - ",这样就免去了在URL编解码和数据库存储时所要做的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等对象标识符的格式。