【ARM 安全系列介绍 3.2 -- Base64 介绍】
2023-12-20 12:58:48
Base64 介绍
Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方法。由于直接处理二进制数据在某些场合可能会出现问题(比如在电子邮件或网页中),因此需要一种方式来将二进制数据编码为纯文本格式。Base64 是一种常用的编码方式,它能将二进制数据转换为由 ASCII 字符组成的字符串。
Base64 字符集
Base64 编码使用以下 64 个字符:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
此外,还有一个特殊字符 =
,用作填充字符,以确保 Base64 编码的字符串长度是 4 的倍数。
编码原理
Base64 编码将每 3 个字节的二进制数据转换为 4 个字节的文本数据。具体步骤如下:
- 将每 3 个字节(共 24 位)的数据分成 4 组,每组 6 位。
- 将每个 6 位的数值转换为对应的 Base64 字符。
- 如果最后一组数据不足 3 个字节,使用 0 进行填充,并在编码结果尾部添加一个或两个
=
作为填充字符。
示例
假设要将文本 “Hello” 进行 Base64 编码。
- 将 “Hello” 转换为 ASCII 编码:
H
-> 72,e
-> 101,l
-> 108,l
-> 108,o
-> 111。 - 将 ASCII 编码转换为二进制:
72
->01001000
,101
->01100101
,108
->01101100
,108
->01101100
,111
->01101111
。 - 将二进制数据分组:
010010 000110 010101 101100 011011 000110 1111
。 - 由于 “Hello” 为 5 字节,最后一组不足 3 字节,因此需要在二进制末尾添加四个 0 bit 来填充:
01101100 01101111 11110000
。 - 将每组 6 位二进制转换为对应的 Base64 字符:
010010
->S
,000110
->G
,010101
->V
,101100
->s
,011011
->b
,000110
->G
,1111
(+填充)->v
,0000
(+填充)->A
。 - 最后的 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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!