想了解base64编解码方法吗?在本教程中,我们通过各种示例解释了使用 bash shell 脚本的 base64 编码和解码步骤。
base64 编码方法通过将二进制数据转换为文本,在任何通信介质上传输数据。此方法主要用于电子邮件加密过程。
通常,Base64 方法是一种二进制到文本的编码方案,以 ASCII 字符串格式表示 8 字节的二进制数据。在各种媒体之间传输或传输数据时,这有几个优势——尤其是那些可靠地支持文本内容的媒体。因此,它在万维网上被广泛使用。这种编码方案最常用的情况可能是将其用于电子邮件附件。
根据 Base64 表示表,二进制数据可以转换为 64 种不同的 ASCII 字符——易于传输和打印。这种编码方法使用字母 A 到 Z、a 到 Z、0 到 9 以及 + 和 /。
共有 64 个 ASCII 字符来表示二进制从000000
到111111
。每个非最终 Base64 数字正好代表 6 位数据。
Bash base64 编码和解码
句法
在了解示例之前,这里是基本语法。
base64 [OPTIONs] [INFILE] [OUTFILE]
OPTIONs:您可以提供任何选项或将它们组合起来,如下所述。
INFILE:可以从标准输入(如命令行)或文件中获取输入。
OUTFILE:您可以将输出重定向到标准输出,例如终端或文件。
论据 | 说明 |
-e 或 --encode | 此选项用于对来自标准输入或任何文件的任何数据进行编码。这是默认选项。 |
-d 或 –decode | 此选项用于解码来自标准输入或任何文件的任何编码数据。 |
-n 或 –noerrcheck | 默认情况下,base64 在解码任何数据时都会检查错误。您可以使用 –n 或 –noerrcheck 选项忽略解码时的检查。 |
-i,–ignore-garbage | 此选项用于在解码时忽略非字母字符。 |
-u 或 --help | 此选项用于获取有关此命令用法的信息。 |
示例 1 – 基本编码
在 Linux 中,默认安装 base64 包。因此,您可以轻松地从命令行使用它。要简单地对字符串或文本进行编码,您可以通过管道通过命令行将其传递并获取编码的文本。在此示例中,字符串 debugpoint.com 被编码为 base64。
echo "debugpoint.com" | base64
结果是 base64 编码的字符串。
解释
编码方法使用几个步骤来转换输入。输入字符被转换为 8 位二进制值。整个二进制字符串集被拆分为 6 位二进制值,这些值被转换为十进制。
每个十进制值都通过 base64 索引表转换为 base64 字符。
在上面的示例中,第一个字符“d”被转换为 binary 01100100
。前 6 位是011001
,即十进制的 25。25 指的是 base64 索引表中的 Z。整个文本流都会如此。请参见下面的示例。
示例 2 – 基本解码
要解码字符串,只需使用选项将编码值传递给 base64 --decode
。它会给你准确的输入字符串。
示例 3 – 编码文本文件
相同的命令可用于对文本文件进行编码并将输出重定向到另一个文本文件。就是这样。
base64 example3.txt > example3-encoded.txt
示例 4 – 解码文本文件
要解码使用 base64 编码的文本文件,只需使用--decode
或-d
开关并传递文本文件名。
base64 -d example3-encoded.txt
示例 5 – 对来自用户的自定义输入进行编码
使用 bash shell 编程,您可以通过终端从用户那里获取输入并对其进行编码。但为此,您需要编写一个简单的 shell 脚本并在授予可执行权限后执行它。
这是一个简单的例子,它接受用户的输入并显示编码的字符串。
#!/bin/bash
#Sample program to take input, encode to base64 and display on terminal
#Example by www.mryunwei.com
echo "Enter text for encoding to base64:"
read input_text
output_text=`echo -n $input_text | base64`
echo "The Base64 Encoded text is: $output_text"
示例 6 – 使用 base64 的简单身份验证
您可以使用上述编码和解码方法实现一个简单的身份验证系统。您可以要求用户输入密码或密码。然后将密码存储在文件中或即时比较。
如果存储的编码字符串与用户输入的编码文本匹配,则用户通过身份验证。然而,这是一种检查身份验证的直接方法,但有时对简单的业务案例很有用。
#!/bin/bash
#Sample program to take input, encode to base64 and display on terminal
#Example by www.mryunwei.com
echo "Type your password"
read pwd1
decoded_text=`echo 'U2lsZW5jZSBpcyBnb2xkZW4h' | base64 --decode`
if [[ $pwd1 == $decoded_text ]]
then
echo "You are a valid user."
else
echo "You are NOT a valid user."
fi
结论
我希望您能通过这些示例学习Base64编码和解码的基础知识。另外,了解一下它的内部工作原理。如果这对您有帮助或需要有关此主题的其他教程,请在下面的评论框中告诉我。