【python之base64加解密】

1、什么是Base64

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。

3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。

2、python中的base64模块

Base64模块真正用得上的方法只有8个,分别是:

encode, decode为一组, 专门用来编码和解码文件的, 也可以对StringIO里的数据做编解码;

encodestring, decodestring为一组,专门用来编码和解码字符串

b64encode, b64decode为一组, 用来编码和解码字符串,并且有一个替换符号字符的功能

因为Base64编码后的字符除了英文字母和数字外还有三个字符’ + / =‘,其中’=‘只是为了补全编码后的字符数为4的整数,而’+‘和’/‘在一些情况下需要被替换的,b64encode和b64decode正是提供了这样的功能。至于什么情况下’+‘和’/'需要被替换,最常见的就是对url进行Base64编码的时候。

urlsafe_b64decode, urlsafe_b64encode为一组,这个就是用来专门对url进行Base64编解码的,实际上也是调用的前一组函数。

base64.b64encode()将bytes类型数据进行base64编码,返回编码后的bytes类型

base64.b64deocde()将base64编码的bytes类型进行解码,返回解码后的bytes类型

decode的作用是将其他编码的字符串转换成unicode编码

encode的作用是将unicode编码转换成其他编码的字符串

3、Base64有什么使用场景

Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据,包括MIME的电子邮件及XML的一些复杂数据

4、base64转换过程

在这里插入图片描述

5、python代码实现

import base64 
 
#加密 
str1 = "你好" 
b = base64.b64encode(str1.encode('utf-8'))
print("加密的结果:",b) 
 
#解密 
c = base64.b64decode(b).decode("utf-8")
print("解密的结果:",c)

结果:
加密的结果: b'5L2g5aW9'
解密的结果: 你好

原文链接:https://blog.youkuaiyun.com/weixin_42162451/article/details/116336344

<think>好的,我现在需要帮助用户解决关于Python中使用Base64进行编码和解码的问题。用户明确要求示例,所以我要提供具体的代码例子。首先,我得回想一下Base64的基本用法,确保自己理解正确。Base64模块在Python中通常是用来处理二进制数据的编码,常见于将二进制数据转换为ASCII字符串,方便在文本协议中传输,比如在JSON或XML中嵌入二进制数据。 接下来,我需要查阅用户提供的引用内容。引用1、2、3都是关于PythonBase64的使用,而引用4提到了PHP的函数,但用户的问题集中在Python上,所以主要参考前三个引用。引用1给出了一个简单的例子,直接使用b64encode和b64decode函数,引用2详细说明了如何处理bytes对象和字符串之间的转换,引用3则提到算法实现,但用户可能不需要这部分,只需要应用方法。 用户想要的是编码和解码的示例,所以应该从简单例子入手。首先,字符串需要转换为bytes,因为Base64函数处理的是字节数据。例如,字符串'sample text'需要编码为bytes,可以用s.encode('utf-8')或者直接加前缀b,如果字符串是字面量的话。然后,使用base64.b64encode()得到编码后的bytes,再解码为字符串以便打印或传输。解码时则是相反的过程,先Base64解码得到bytes,再转换为字符串。 需要注意的地方是,输入必须是bytes类型,否则会出错。比如,直接传递字符串给b64encode会引发错误,必须显式编码。另外,处理文件或二进制数据时,可能需要读取文件为bytes再进行编码,比如图片文件。 用户可能还关心异常处理,比如在解码非法字符时如何处理,但用户的问题中没有提到,可能暂时不需要涉及。需要保持示例简单明了,直接展示编码和解码的基本流程,确保用户能看懂并复制使用。 总结步骤:导入模块,准备原始数据,编码,打印结果,然后解码,验证结果是否一致。可能还需要说明如何处理字符串和bytes之间的转换,以及常见应用场景,比如API数据传输、图片编码等。 现在,组织这些内容,分步骤写出示例代码,并加上注释说明每个步骤的作用。同时,确保代码语法正确,符合Python3的标准,比如使用base64.b64encode().decode('utf-8')来得到字符串。最后,生成相关问题,帮助用户进一步学习,比如处理URL安全的Base64、填充问题、错误处理等。</think>### 分步说明PythonBase64编码解码 #### 1. 基础编码解码示例 ```python import base64 # 原始字符串(需转为bytes类型) original_str = "Python Base64示例" bytes_data = original_str.encode("utf-8") # 字符串转bytes # Base64编码 encoded_bytes = base64.b64encode(bytes_data) encoded_str = encoded_bytes.decode("utf-8") # bytes转可打印字符串 print("编码结果:", encoded_str) # 输出: UHl0aG9uIEJhc2U2NOaXpeWcsA== # Base64解码 decoded_bytes = base64.b64decode(encoded_str) decoded_str = decoded_bytes.decode("utf-8") # bytes转原始字符串 print("解码结果:", decoded_str) # 输出: Python Base64示例 ``` #### 2. 文件内容编码 ```python # 将图片转为Base64字符串 with open("image.jpg", "rb") as f: image_bytes = f.read() image_b64 = base64.b64encode(image_bytes).decode("utf-8") # 将Base64字符串还原为图片 recovered_bytes = base64.b64decode(image_b64) with open("recovered.jpg", "wb") as f: f.write(recovered_bytes) ``` #### 3. URL安全编码 使用`urlsafe_b64encode`替代标准方法: ```python data = b"\xfb\xff" # 包含特殊字符+/的二进制 safe_encoded = base64.urlsafe_b64encode(data).decode() print(safe_encoded) # 输出: +w8= → -w8= ``` #### 关键点说明 - **输入要求**:所有编码方法要求输入为`bytes`类型,字符串需先进行`.encode()`转换 - **输出处理**:编码结果返回`bytes`类型,需`.decode()`转为字符串 - **填充符号**:当数据长度不是3的倍数时,编码结果会包含`=`填充符[^2] - **标准差异**:标准Base64包含`+/`字符,URL安全版本使用`-_`替代[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值