📜  在Python中编码和解码 Base64 字符串

📅  最后修改于: 2022-05-13 01:55:44.181000             🧑  作者: Mango

在Python中编码和解码 Base64 字符串

Base64 编码用于将具有二进制或文本数据的字节转换为 ASCII字符。编码可防止数据在通过纯文本系统传输或处理时被损坏。在本文中,我们将讨论 Base64 编码和解码及其用于编码和解码二进制和文本数据的用途。

Base64 编码:
它是将字节转换为 ASCII字符的一种类型。下面提到了可用的 Base64字符列表:

  • 26个大写字母
  • 26个小写字母
  • 10 个号码
  • + 和 / 换行

每个 Base64字符代表 6 位数据。同样重要的是要注意,出于显而易见的原因,它并不意味着加密。
要将字符串转换为 Base64字符,应遵循以下步骤:

  • 获取字符串中每个字符的 ASCII 值。
  • 计算 ASCII 值的 8 位二进制等效值
  • 通过重新分组数字将 8 位字符块转换为 6 位块
  • 将 6 位二进制组转换为其各自的十进制值。
  • 使用 Base64 编码表为每个十进制值对齐各自的 Base64 值。

下图为我们提供了 Base64 编码表。

图片来源:维基百科

使用Python对字符串进行编码:
在Python中,base64 模块用于对数据进行编码和解码。首先,将字符串转换为类似字节的对象,然后使用 base64 模块进行编码。下面的示例显示编码字符串的实现不是 base64字符。

例子:

import base64
  
sample_string = "GeeksForGeeks is the best"
sample_string_bytes = sample_string.encode("ascii")
  
base64_bytes = base64.b64encode(sample_string_bytes)
base64_string = base64_bytes.decode("ascii")
  
print(f"Encoded string: {base64_string}")

输出:

Encoded string: R2Vla3NGb3JHZWVrcyBpcyB0aGUgYmVzdA==

使用Python解码字符串:
解码 Base64字符串与编码完全相反。首先,我们将 Base64字符串转换为未编码的数据字节,然后将字节类对象转换为字符串。下面的示例描述了上述示例编码字符串输出的解码。

例子:

import base64
  
  
base64_string =" R2Vla3NGb3JHZWVrcyBpcyB0aGUgYmVzdA =="
base64_bytes = base64_string.encode("ascii")
  
sample_string_bytes = base64.b64decode(base64_bytes)
sample_string = sample_string_bytes.decode("ascii")
  
print(f"Decoded string: {sample_string}")

输出:

Decoded string: GeeksForGeeks is the best