• 加解密相关基础知识


      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

     

    不断学习中。。。

  • 相关阅读:
    浅谈常量
    运算符
    TTL与CMOS门电路
    16位CRC校验_Delphi
    DXP快捷键记录(红色为经常用到的)
    论EFMS模拟量部分采集电路的修改
    稳压二极管应用电路_转载
    TVS二极管
    TryEnterCriticalSection___Delphi
    很好用的一个翻译插件
  • 原文地址:https://www.cnblogs.com/hanerfan/p/4079846.html
Copyright © 2020-2023  润新知