笔记-base64编码

2018-11-21  本文已影响0人  何妨吟啸且徐行1

  虽然经常听说“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
上一篇下一篇

猜你喜欢

热点阅读