编码技术

一、编码

1、base64 编码

  base64编码是将文本重新编码,转化成指定 64个可见ASCII字符的形式,这64个字符包括 A~Z, a~z, 0~9, + 和 /  

  其原理是将原文本按每3个字节取出来,每 6bit 依次拆开,首部补上2bit的0值,这样原本3字节的数据就变成了新的4字节。

  从原理可知,base64编码之后,最终文本会比原文本增加33.3%。

  需要注意的是,如果原文本取到最后,不足3字节,则不足6bit部分,除首部补上2bit的0值之外,尾部也补上0值,凑足8bit。

  那新拼成的4字节是按标准的ASCII码显示吗?不是,是按一份约定好的索引表,该表如下:

数值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
字符 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f
                                                                 
数值 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
字符 g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 + /

   需要注意的是,如果不足3字节,缺少几个字节就在最终编码后面补上几个=号,即最多可以补两个=号。

 

  比如对 go 进行 base64 ,首先就能猜到最终编码末尾会补上一个 = 号,然后我们看一下原文的ASCII码, g 是 103 即 01100111, o 是 111 即 01101111,放到一起是 0110011101101111,按每 6bit 分割为 011001 | 110110 | 1111 ,补好首部和尾部是 00011001 | 00110110 | 00111100 ,转成十进制为 25 | 54 | 60 ,查表得出 Z | 2 | 8,即 Z28,再补上一个=号,最终结果是 Z28=

  base64可以将不可见字符转成可见字符传输,在 STMP 协议和其它文本协议中比较常用。此外在HTTP协议中,有时也会进行base64或url编码,来转换掉一些特殊字符。

 

2、url编码

 

3、16进制编码(二进制编码、64进制编码[base64])

 

4、ASCII码

 

posted @ 2017-07-26 17:02  轻典  阅读(535)  评论(0编辑  收藏  举报