base64编码规则
编码规则
????? Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节
数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前
补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是
3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在
结尾添加1到2个 “=”。
例:将对ABC进行BASE64编码:
1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);
2、再取二进制值A(01000001)B(01000010)C(01000011);
3、然后把这三个字节的二进制码接起来(010000010100001001000011);
4、 再以6位为单位分成4个数据块,并在最高位填充两个0后形成4个字节的编码后的值,(00010000)(00010100
)(00001001)(00000011),其中蓝色部分为真实数据;
5、再把这四个字节数据转化成10进制数得(16)(20)(9)(3);
6、最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)—),这里的值实际就是
数据在字符表中的索引。
注:BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
字母表:(from RFC 3548)
Table 1: The Base 64 Alphabet
Value Encoding? Value Encoding? Value Encoding? Value Encoding
?? 0??? A???????? 17???? R??????????? 34 i??????????? 51 z
????????? 1 B??????????? 18 S??????????? 35 j??????????? 52 0
????????? 2 C??????????? 19 T??????????? 36 k??????????? 53 1
????????? 3 D??????????? 20 U??????????? 37 l??????????? 54 2
????????? 4 E??????????? 21 V??????????? 38 m??????????? 55 3
????????? 5 F??????????? 22 W??????????? 39 n??????????? 56 4
????????? 6 G??????????? 23 X??????????? 40 o??????????? 57 5
????????? 7 H??????????? 24 Y??????????? 41 p??????????? 58 6
????????? 8 I??????????? 25 Z??????????? 42 q??????????? 59 7
????????? 9 J??????????? 26 a??????????? 43 r??????????? 60 8
???????? 10 K??????????? 27 b??????????? 44 s??????????? 61 9
???????? 11 L??????????? 28 c??????????? 45 t??????????? 62 +
???????? 12 M??????????? 29 d??????????? 46 u??????????? 63 /
???????? 13 N??????????? 30 e??????????? 47 v
???????? 14 O??????????? 31 f??????????? 48 w???????? (pad) =
???????? 15 P??????????? 32 g??????????? 49 x
???????? 16 Q??????????? 33 h??????????? 50 y
而且base64特别适合在http,mime协议下快速传输数据。
base64其实不是安全领域下的加密解密算法。虽然有时候经常看到所谓的base64加密解密。其实base64只能算是一个编码算法,对数据内容进行编码来适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是这种方式很初级,很简单。