【ARM 安全系列介绍 3.2 -- Base64 介绍】

2023-12-20 12:58:48

Base64 介绍

Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方法。由于直接处理二进制数据在某些场合可能会出现问题(比如在电子邮件或网页中),因此需要一种方式来将二进制数据编码为纯文本格式。Base64 是一种常用的编码方式,它能将二进制数据转换为由 ASCII 字符组成的字符串。

Base64 字符集

Base64 编码使用以下 64 个字符:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 

此外,还有一个特殊字符 =,用作填充字符,以确保 Base64 编码的字符串长度是 4 的倍数。

编码原理

Base64 编码将每 3 个字节的二进制数据转换为 4 个字节的文本数据。具体步骤如下:

  1. 将每 3 个字节(共 24 位)的数据分成 4 组,每组 6 位。
  2. 将每个 6 位的数值转换为对应的 Base64 字符。
  3. 如果最后一组数据不足 3 个字节,使用 0 进行填充,并在编码结果尾部添加一个或两个 = 作为填充字符。

示例

假设要将文本 “Hello” 进行 Base64 编码。

  1. 将 “Hello” 转换为 ASCII 编码:H -> 72,e -> 101,l -> 108, l -> 108, o -> 111。
  2. 将 ASCII 编码转换为二进制:72 -> 01001000101 -> 01100101108 -> 01101100108 -> 01101100111 -> 01101111
  3. 将二进制数据分组:010010 000110 010101 101100 011011 000110 1111
  4. 由于 “Hello” 为 5 字节,最后一组不足 3 字节,因此需要在二进制末尾添加四个 0 bit 来填充:01101100 01101111 11110000
  5. 将每组 6 位二进制转换为对应的 Base64 字符:010010 -> S000110 -> G010101 -> V101100 -> s011011 -> b000110 -> G1111(+填充)-> v0000(+填充)-> A
  6. 最后的 Base64 编码结果为 “SGVsbG8=”,其中的 “=” 是填充字符。

在 Python 中使用 Base64 编解码

Python 的 base64 模块可以轻松地进行 Base64 的编解码操作。

以下是编码和解码的示例:

import base64 

# 编码 
original_string = "Hello" 
encoded_string = base64.b64encode(original_string.encode("utf-8")) 
print(encoded_string) # 输出: b'SGVsbG8=' 

# 解码 
decoded_bytes = base64.b64decode(encoded_string) 
decoded_string = decoded_bytes.decode("utf-8") 
print(decoded_string) # 输出: Hello 

请注意b64encode 方法返回的是字节串对象,如果你需要得到字符串,可以调用 .decode("utf-8") 进行转换。同样,解码时也需要将字节串转换回字符串。

文章来源:https://blog.csdn.net/sinat_32960911/article/details/135083684
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。