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


请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | GCC | CSH | Armv8/v9 系统异常分析】


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") 进行转换。同样,解码时也需要将字节串转换回字符串。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值