base64

一.什么是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陈发强'

>>>

原文地址:https://www.cnblogs.com/cfqlovem-521/p/11700429.html