美文网首页
笔记-base64编码

笔记-base64编码

作者: 何妨吟啸且徐行1 | 来源:发表于2018-11-21 13:43 被阅读0次

      虽然经常听说“base64加解密”的说法,但是严格意义上来讲,base64对数据的吃力方式,数据安全性并不高,所以更多时候称之为编码解码更合适。
      base64的原理:概括来说,就是用64个字符表示二进制数据。
      所以这里说的64指什么:
      从0开始,依次对字符进行编号: A-Z,a-z,0-9,+/(按照这个顺序从0开始编号),一共64个字符。

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

      base64编解码原理:
      编码原理核心就是将3个8位二进制转换为4个六位二进制,对于不足3*8=24的情况,需要自动补充为24个bits的整数倍;
      解码原理刚好相反,需要从4个6位二进制,转换成3个8位二进制,再转换回到原始字符。
    整个过程都是可逆的。

    流程图:

    base64加解密过程

    举个例子:

    准备加密数据:You:
    查ASCII表知道对应ASCII值:089 111 117
    换成二进制结果: 1011001 1101111 1110101
    不够8位,补全(最高位补全):
    01011001 01101111 01110101
    拆分成6位:
    010110 010110 111101 110101
    高位补0:
    00010110………………
    转十进制计算:22 22 61 53
    对应base64: WW91

    编码结果使用=号补位,原文的字节最后不够3个的地方,转换Base64编码时用=号来代替。

    python直接提供了base64的内部库,可以直接使用:

    # 举个例子
    import base64
    print base64.b64encode("You")
    print base64.b64decode("WW91")
    
    # 输出结果
    WW91
    You
    

    相关文章

      网友评论

          本文标题:笔记-base64编码

          本文链接:https://www.haomeiwen.com/subject/kbixqqtx.html