Python简单实现Base64编码和解码的方法

yizhihongxing

下面是“Python简单实现Base64编码和解码的方法”的完整攻略:

1. Base64编码概述

Base64是一种将数据编码的方法,可将任意二进制数据转换为纯文本格式便于传输。

Base64编码由64个字符组成,即:A-Z、a-z、0-9和“+”、“/”两个符号。

2. Python内置库 base64

在Python中,可以很方便地使用内置库base64进行Base64编码与解码。

2.1 Base64编码

使用base64库的b64encode()函数进行Base64编码,示例代码如下:

import base64

text = 'Hello World!'
encoded_text = base64.b64encode(text.encode('utf-8'))
print(encoded_text)

输出结果为:b'SGVsbG8gV29ybGQh'

2.2 Base64解码

使用base64库的b64decode()函数进行Base64解码,示例代码如下:

import base64

encoded_text = 'SGVsbG8gV29ybGQh'
decoded_text = base64.b64decode(encoded_text).decode('utf-8')
print(decoded_text)

输出结果为:Hello World!

3. 自定义实现 Base64 编码和解码

虽然Python中已经有了base64库提供的编码和解码方法,但我们也可以自己实现,以提高对Base64的理解。

3.1 Base64编码

Base64编码的实现是将字符转成对应的ASCII码值,再将二进制序列的每6位组成一个整数,根据这个整数在Base64编码字符表中查找对应的字符,重复直到所有数据均转换成Base64字符为止。

以下是Python实现的代码示例:

import string

BASE64_CHARS = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+' + '/'

def base64_encode(text: str) -> str:
    # 将字符串转换成二进制格式
    text_bytes = text.encode('utf-8')
    bin_text = ''.join([f'{byte:08b}' for byte in text_bytes])

    # 补全 Base64 编码中所需要的 0
    remainder = len(bin_text) % 6
    if remainder:
        bin_text += '0' * (6 - remainder)

    # 按照 6 位分组,并将每组转换为 10 进制整数,最后转换为 Base64 编码字符
    groups = [bin_text[i: i+6] for i in range(0, len(bin_text), 6)]
    decimal_groups = [int(group, 2) for group in groups if group != '']
    encoded_text = ''.join([BASE64_CHARS[i] for i in decimal_groups])

    # 补全末尾的等号
    remainder = len(encoded_text) % 4
    if remainder:
        encoded_text += '=' * (4 - remainder)

    return encoded_text

3.2 Base64解码

Base64解码的实现是将字符在Base64编码字符表中的位置转换成10进制整数,并将这个整数转换成二进制字符串,然后将每个6位分成一组,并将每组转换成对应的字符。

以下是Python实现的代码示例:

def base64_decode(text: str) -> str:
    # 去掉 Base64 编码中末尾的等号
    text = text.rstrip('=')

    # 将 Base64 编码字符转换成对应的10进制整数
    decimal_groups = [BASE64_CHARS.index(c) for c in text]

    # 将10进制整数转换成二进制字符串,并将各位拼接起来
    bin_text = ''.join([f'{decimal:06b}' for decimal in decimal_groups])

    # 按照 8 位分组,并将每组转换成字符
    groups = [bin_text[i: i+8] for i in range(0, len(bin_text), 8)]
    decoded_text = ''.join([chr(int(group, 2)) for group in groups])

    return decoded_text

4. 示例验证

可以使用自定义实现的Base64编码和解码对文本进行编解码,验证规则是否正确。

以下是Python实现的代码示例:

text = 'Hello World!'
encoded_text = base64_encode(text)
decoded_text = base64_decode(encoded_text)
print(f'原文: {text}')
print(f'Base64 编码后: {encoded_text}')
print(f'Base64 解码后: {decoded_text}')

输出结果为:

原文: Hello World!
Base64 编码后: SGVsbG8gV29ybGQh
Base64 解码后: Hello World!

另一个示例:

text = 'Python is fun!'
encoded_text = base64_encode(text)
decoded_text = base64_decode(encoded_text)
print(f'原文: {text}')
print(f'Base64 编码后: {encoded_text}')
print(f'Base64 解码后: {decoded_text}')

输出结果为:

原文: Python is fun!
Base64 编码后: UHl0aG9uIGlzIGZ1biE=
Base64 解码后: Python is fun!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python简单实现Base64编码和解码的方法 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 利用Python实现简单的Excel统计函数

    以下是“利用Python实现简单的Excel统计函数”的完整实例教程: 1. 引言 Python可以很方便地对Excel文件进行读写和处理,本文将介绍如何使用Python实现简单的Excel统计函数。为了实现这个目标,我们将使用Pandas库,它是一个用于数据处理的强大的Python库。如果您还不熟悉Pandas库,可以先查看Pandas的官方文档。 2. …

    python 2023年5月13日
    00
  • python TKinter获取文本框内容的方法

    获取python中Tkinter文本框内容的方法有多种,下面将介绍其中两种方法的使用。 方法一:使用.get()方法获取文本框内容 使用.get()方法可以获取文本框中的内容,使用步骤如下: 创建一个文本框,并设置相应的属性: from tkinter import * root = Tk() text = Text(root, width=50, heig…

    python 2023年6月13日
    00
  • Python异常处理例题整理

    Python异常处理例题整理 什么是异常? 在 Python 执行代码时,如果发生了错误,都会抛出一个异常,这时程序会停止执行,跳出当前代码块并返回错误信息。 Python异常处理 在 Python 中,我们可以使用 try…except…finally 的方式来捕获异常并进行处理。其语法格式如下: try: # 可能出现异常的代码段 except …

    python 2023年5月13日
    00
  • 从CentOS安装完成到生成词云python的实例

    下面就为大家讲解如何从CentOS安装完成到生成词云python的实例。 安装Python CentOS自带的默认Python版本较低,需要我们手动安装一个新版本的Python。可以通过以下步骤安装Python: 安装编译所需软件包: sudo yum install -y wget gcc sqlite-devel zlib-devel openssl-d…

    python 2023年5月20日
    00
  • Python如何发布程序的详细教程

    下面我将为您详细讲解一下 Python 如何发布程序的详细教程,包括以下几个步骤: 使用打包工具将 Python 代码打包成安装文件 编写安装脚本 测试安装文件并上传到 PyPI(Python Package Index) 安装并使用发布的 Python 程序 下面我们逐一进行详细阐述。 打包 Python 代码 Python 打包工具是将 Python 代…

    python 2023年5月30日
    00
  • Python分治法定义与应用实例详解

    分治法(Divide and Conquer)是一种算法设计策略,它将问题分解成若干个子问题,然后递归地解决这些子问题,最将子问题的解合并成原问题的解。Python中的分治可以应用于各种问题,例如排序、查找、计算等。本文将介绍Python中的分治法的定义和应用实例。 分治法的定义 分治法是一种递归的算法设计策略,它将问题分解成若干个子问题,然后递归地解决这些…

    python 2023年5月13日
    00
  • Python3内置模块random随机方法小结

    Python3内置模块random随机方法小结 Python内置的random模块提供了许多生成随机数的方法,可以用于模拟、游戏、密码生成、实验和统计等场合。本文将介绍常用的几个方法以及示例。 1. random.random() 函数返回一个0到1之间的随机浮点数,即[0,1)区间内的数。 示例1: import random print(random.r…

    python 2023年6月3日
    00
  • Python常用内置函数的使用教程详解

    Python常用内置函数的使用教程详解 Python是一种非常强大的编程语言,其内置了许多有用的函数,这些函数可以帮助我们更加高效地编写程序。本文将介绍Python内置函数的使用方法,以及一些常见的例子。 Python内置函数 Python的内置函数可以帮助我们完成各种任务,包括数学计算、字符串处理、列表和字典等容器的操作,还可以帮助我们进行文件IO操作等。…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部