如何在 Linux 上编码或解码 Base64 字符串
让我们来解密这个base64之谜。
想要了解如何使用 Base64 二进制到文本方案对字符串进行编码和解码?本教程将向您展示使用 base64 命令和 Python 编程语言在 Linux 上对字符串进行编码和解码的两种方法。
base64用在哪里?
Base64 广泛应用于不同领域。一些最常见的领域包括电子邮件附件、Web 开发、网络和 URL 编码。
一些电子邮件系统使用 base64 将图像和文档等二进制数据编码为文本格式,以便这些数据可以与消息一起安全地传输。 Web 开发人员还使用 base64 将图像嵌入到 HTML 和 CSS 中,以减少 HTTP 请求数量并提高页面加载速度。
Base64 编码的另一个常见用途是身份验证令牌。有时,用户名和密码会使用此编码方案进行屏蔽,并添加到 HTTP 标头或 URL 参数中。在网络中,base64 用于使用基于文本的通信的协议(例如 HTTP 和 SMTP),用于无损传输数据。
您应该知道的是,base64 只是一种编码方案。编码数据可以轻松解码以恢复原始数据。如果您需要加密数据,则永远不应该使用它。
使用 base64 命令对字符串进行编码
使用 base64 对字符串进行编码的最基本方法是使用 echo 命令将其输出到终端。诀窍是将 echo 命令的输出通过管道传输到 base64,如下所示:
echo 'I love Linux' | base64
由于 echo 命令的默认行为,字符串末尾有一个尾随换行符。如果您想省略它并仅使用字符串,请运行:
echo -n 'I love Linux' | base64
正如您所注意到的,输出与之前的不同。您还可以使用 printf 命令来执行此操作,该命令不会自动将换行符附加到字符串中。格式如下:
printf 'I love Linux' | base64
此输出与前一个输出相同,因为这次没有换行符。如果您熟悉 Linux 上的here-strings,您还可以使用它们将字符串输出发送到 base64 命令,如下所示:
base64 <<< 'I love Linux'
与 echo 命令类似,here-strings 也在字符串末尾添加换行符。
使用 base64 命令对文件进行编码
要使用 base64 对文件进行编码,您可以将文件直接作为选项传递给 base64 命令。
要测试它,请创建一个新文件并向其中添加一些文本。如果您已有文本文件,请使用它。我创建了一个名为 base.txt 的文件。要将文件内容编码为 Base64,请运行:
base64 base.txt
请记住将 base.txt 替换为您的文件名。上述命令仅在终端中显示输出。它不会将编码的字符串保存在任何地方。但是,您可以通过将输出重定向到新文件来轻松做到这一点。我创建了另一个名为output.txt 的文件。这次我将把输出保存到那个空文件中。这是执行此操作的命令:
base64 base.txt > output.txt
如您所见,终端没有显示输出。该命令将其保存到另一个文件中。
使用base64命令解码base64字符串
要解码 Base64 字符串并将其转换为常规字符串,您需要在 base64 命令中使用“-d”标志。让我们看一下使用 echo 命令的演示。
echo 'SG93VG9HZWVrCg==' | base64 -d
如果您想使用here-strings 来解码base64 字符串,请使用:
base64 -d <<< SG93VG9HZWVrCg==
有时,字符串中可能存在非字母数字字符。您可以在使用“-i”选项解码字符串时忽略这些内容。
使用Python对base64字符串进行编码和解码
如果你是一名Python程序员或者比Bash更熟悉Python编程语言,那么这种方法会更适合你。 Python 有一个 base64 模块,可用于编码和解码字符串。您可以使用 python3 终端命令或编写完整的程序。我将向您展示两种方法。
python3 命令有一个“-m”或模块标志。您可以使用此标志来调用 base64 模块。然后,您可以借助 echo 命令或here-strings 传递字符串。这是完整的命令:
echo 'I love Linux' | python3 -m base64 # Using the echo commandpython3 -m base64 <<< 'I love Linux' # Using here-strings
要解码 Base64 字符串,您所需要做的就是使用“-d”标志,如之前在 base64 命令中看到的那样。语法如下:
echo 'SSBsb3ZlIExpbnV4Cg==' | python3 -m base64 -d # Using the echo commandpython3 -m base64 -d <<< 'SSBsb3ZlIExpbnV4Cg==' # Using here-strings
当然,更方便的方法是创建一个Python程序,可以通过接受用户输入来处理编码和解码。首先,让我们创建一个对字符串进行编码的程序。这是编码代码:
import base64
# Get input string from the user
input_string = input("Enter the string to encode: ")
# Encode the string using base64
encoded_string = base64.b64encode(input_string.encode('utf-8'))
# Decode the encoded string to ensure it's correct (optional)
decoded_string = base64.b64decode(encoded_string).decode('utf-8')
# Print the encoded and decoded strings
print("Encoded string:", encoded_string.decode('utf-8'))
print("Decoded string (verification):", decoded_string)
使用合适的名称和“.py”扩展名保存文件。我将其保存为名称 base64_encoder.py。完成后,运行程序:
python3 base64_encoder.py
您还可以创建一个程序来解码 Base64 字符串。这是您可以使用的代码片段:
import base64
# Get input base64 string from the user
encoded_string = input("Enter the Base64 string to decode: ")
try:
# Decode the string using base64.b64decode()
decoded_string = base64.b64decode(encoded_string).decode('utf-8')
print("Decoded string:", decoded_string)
except Exception as e:
print(f"Error decoding string: {e}")
保存文件并以相同的方式运行程序。
python3 base64_decoder.py
现在您可以使用这些 Python 程序对任何字符串进行编码和解码。
因此,这是使用 Base64 对字符串进行编码和解码的两种最简单的方法。如果您想了解有关 Linux 上的 base64 命令的更多信息,最好查看其手册页。