Python Base64编码和解码操作
作者:峡谷的小鱼 发布时间:2022-10-20 06:26:05
标签:Python,Base64,编码,解码
Base64编码和解码
Base64 不是加密算法,只是一种编码方式,数据从一种形式转换为另一种形式进行传输/存储。Base64 就是一种基于64个可打印字符来表示二进制数据的方法。
Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。最后,用一个码表来得到我们想要的字符串,这就是 Base64编码。
码表:
索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 |
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | j | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | ||
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
Python 中集成了base64 模块,可用于对二进制数据进行编码解码操作:
>>> a = "Hello world"
>>> b = base64.encode(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: encode() missing 1 required positional argument: 'output'
>>>
>>>
>>> b = base64.b64encode(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.8/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
>>>
>>>
>>>
>>> a = b"Hello world"
>>> b = base64.b64encode(a)
>>> b
b'SGVsbG8gd29ybGQ='
>>> c = base64.b64decode(b)
>>> c
b'Hello world'
>>> d = b.decode('ascii')
>>> d
'SGVsbG8gd29ybGQ='
>>> e = base64.b64decode(d)
>>> e
b'Hello world'
>>>
可以看到使用 base64.b64encode 进行编码时,只能时二进制数据,如果输入时 str 文本,将报错 TypeError。
而使用 base64.b64decode 解码时,字符串和字节床都可以作为输入。
来源:https://blog.csdn.net/weixin_43276033/article/details/124886105


猜你喜欢
- 最近在做公司的某个从项目,基本设计和淘宝登陆页类似: 1)文本框内容为空是,文本框右侧无清除按钮,当有内容时立即显示清除按钮;2)当文本框失
- 本文分析了MySQL中字符串索引对update的影响。分享给大家供大家参考,具体如下:对某一个类型为varchar的字段添加前缀索引后,基于
- 具体代码如下所述:#coding=utf-8import itchatfrom itchat.content import TEXTfrom
- 先由exp把数据卸出到文件系统, 产生一个.dmp文件, 然后必要时再由imp将数据装入数据库. 对于一般中小型数据库来说, 全数据库的ex
- 1,在Python中将integer数转化为罗马数说明:在罗马数中(3999以内),和阿拉伯数字相似,可以把它分解为个位,十位,百位,千位,
- 设计师不等于美工设计无所不在,但大多数企业不知道如何使用它。现代设计进入中国大概是二十多年的时间,而在国外,尤其在美国在欧洲,大概有一百年的
- 前言当前二维码的应用越来越广泛,包括疫情时期的健康码也是应用二维码的典型案例,最近需要通过一张二维码显示较多文本数据,也就是对二维码数据进行
- python ThreadPoolExecutor线程池的工作线程中出现异常时,主线程不会捕获异常。解决方法1:直接在需要执行的任务方法中添
- 如果不用“with”,那么Python会在何时关闭文件呢?答案是:视情况而定。Python程序员最初学到的东西里有一点就是可以通过迭代法很容
- 有关pygal的安装,大家可以参阅《pip和pygal的安装实例教程》。直方图:直方图是一个特殊的条,它可以取3个数值:纵坐标高度,横坐标开
- 本文实例讲述了Python加pyGame实现的简单拼图游戏。分享给大家供大家参考。具体实现方法如下:import pygame, sys,
- 一、问题本人在使用layui使用了select按钮,点击是js脚本会异步请求后台接口获取json数据,然后layui将json数据渲染到se
- 1.简介 EXCEPT和INTERSECT运算符使您可以比较两个或多个SELECT语句的结果并返回非重复值。 2.区别 EXCEPT运算符返
- html部分<!DOCTYPE html><html lang="en"><head>
- php cookie中不能使用点号(句号),实际上不是很严格,应该说可以使用点号的cookie名,但会被转换,你命名一个cookie:$_C
- 转换为字符串类型tips['sex_str'] = tips['sex'].astype(str)转换为数值
- python os.stat()获取相关文件的系统状态信息stat 系统调用时用来返回相关文件的系统状态信息的。下面直接以一个具体示例来进行
- 今天写了个小功能,看起来挺简单,写的过程中发现了些坑。1.div没有disabled的属性,所以得写成button2.disabled在da
- 表的普通字段 一对多字段 多对多字段 插入数据#插入数据def add(request):G_title=request.POST.get(
- 问题的起源早些时候使用with实现了一版全局进程锁,希望实现以下效果:with CacheLock("test_lock"