加解密相关基础知识

  1、Base64编码

  1)应用场景:可用于在HTTP环境下传递较长的标识信息。例如Hibernate采用Base64将一个唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。

  NotePad++右键菜单"Plugin commands"的"Base64 Encode"和"Base64 Decode"子菜单项,可以感受下。

  2)编码方法:使用由A-Z、a-z、0-9、"+"、"/"(还有用于填充的"=")组成的字符集表示所有的符号。

  具体的转换步骤:

  (1)将每三个字节即24个bit作为一组;(2)将这24个bit分成四小组,每小组有6个bit;(3)在每小组前加00,扩展成四个字节即32个bit;(4)根据下表,将得到扩展后每个字节的对应符号,组合起来就是base64的编码值。

  因为Base64将三个字节转化成四个字节,因此Base64编码后的文本大小会比原文本大出三分之一左右。

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

  3)一些例子

  字节数刚好是3的情况。如将Man转换成Base64编码:

  (1)"M"、"a"、"n"的ASCII值分别是77、97、110,对应的二进制值是01001101、01100001、01101110,将它们连成一个24位的二进制位串010011010110000101101110;

  (2)将这个24位的位串分成4个小组,每小组6个bit:010011、010110、000101、101110;

  (3)在每小组前面加00,扩展成四个字节即32个bit:00010011、00010110、00000101、00101110。它们的十进制值分别是19、22、5、46。

  (4)根据上面的对照表,得到最终的Base64编码为TWFu。

  字节数是2的情况。此时需要将这两个字节的16个bit转成三组,最后一组除了前面加00以外,后面也要加00。再在得到的Base64编码末尾补上"="。如将Ma转换成Base64编码:

  转换成00010011、00010110、00000100以后,根据上面的对照表得到T、W、E,补上"=",因此最终的Base64编码就是TWE=。

  字节数是1的情况。将这一个字节的8个bit转成二组,最后一组除了前面加00以外,后面再加4个0。再在得到的Base64编码末尾补上两个"="。如将M转换成Base64编码:

  转换成00010011、00010000,根据对照表得到T、Q,补上两个"=",因此最终的Base64编码就是TQ==。

 

  2、MD5消息摘要算法:加密哈希函数,输出是一个128位的哈希值。

 

 

 

 

 

  参考链接:

  http://www.ruanyifeng.com/blog/2008/06/base64.html

 

 

 

不断学习中。。。

posted on 2014-11-06 20:43  han'er  阅读(472)  评论(0编辑  收藏  举报

导航