一.什么是base64,解决什么问题
Base64是一种用64个字符来表示任意二进制数据的方法。
Base64编码可以成为密码学的基石。可以将任意的二进制数据进行Base64编码。所有的数据都能被编码为并只用65个字符就能表示的文本文件。( 65字符:A~Z a~z 0~9 + / = )编码后的数据~=编码前数据的4/3,会大1/3左右。
二.Base64编码的流程
1.将所有字符转化为ASCII码。
2.将ASCII码转化为8位二进制 。
3.将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位。
统一在6位二进制前补两个0凑足8位。
4.将补0后的二进制转为十进制。
5.从Base64编码表获取十进制对应的Base64编码。
三.编码自己的学号姓名
20191206chenfaqiang == MjAxOTEyMDZjaGVuZmFxaWFuZw==
20191206陈发强 == MjAxOTEyMDazwreix78=
四.用Python实现
(一)名字使用拼音
>>> import base64
>>> a = '20191206chenfaqiang'
>>> b = a.encode(encoding = 'utf-8')
>>> base64.b64encode(b)
b'MjAxOTEyMDZjaGVuZmFxaWFuZw=='
>>> c = base64.b64encode(b)
>>> base64.b64decode(c)
b'20191206chenfaqiang'
>>>
(二)名字使用汉字
>>> import base64
>>> a = '20191206陈发强'
>>> b = bytes (a,encoding = 'gkb')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
b = bytes (a,encoding = 'gkb')
LookupError: unknown encoding: gkb
>>> b = bytes(a,encoding = 'gbk')
>>> c = base64.b64encode(b)
>>> print(c)
b'MjAxOTEyMDazwreix78='
>>> d = base64.b64decode(c)
>>> print(d)
b'20191206xb3xc2xb7xa2xc7xbf'
>>> f = str(d,decoding = 'gbk')
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
f = str(d,decoding = 'gbk')
TypeError: 'decoding' is an invalid keyword argument for str()
>>> str(d,encoding = 'gbk')
'20191206陈发强'
>>>