网站搜索

通过示例学习 Bash base64 编码和解码


想了解base64编码和解码方法?在本教程中,我们通过各种示例解释使用 bash shell 脚本进行 Base64 编码和解码的步骤。

Base64 编码方法通过将二进制数据转换为文本来通过任何通信介质传输数据。该方法主要用于电子邮件加密过程。

一般来说,Base64 方法是一种二进制到文本的编码方案,以 ASCII 字符串格式表示 8 字节二进制数据。在各种媒体之间传输或传输数据时,尤其是那些可靠支持文本内容的媒体,这具有多个优势。因此,它在万维网上被广泛使用。这种编码方案最常用的情况可能是将其用于电子邮件附件。

根据 Base64 表示表,二进制数据可以转换为 64 个不同的 ASCII 字符,易于传输和打印。此编码方法使用字母 A 到 Z、a 到 Z、0 到 9 以及 + 和 /。

总共 64 个 ASCII 字符表示从 000000111111 的二进制。每个非最终 Base64 数字恰好代表 6 位数据。

Base64索引表

Bash base64 编码和解码

句法

在了解示例之前,先了解基本语法。

base64 [OPTIONs] [INFILE] [OUTFILE]

选项:您可以提供任何选项或将它们组合起来,如下所述。
INFILE:可以从标准输入(如命令行)或文件中获取输入。
OUTFILE:您可以将输出重定向到标准输出,例如终端或文件。

Arguments

描述

-e or –encode

此选项用于对来自标准输入或任何文件的任何数据进行编码。这是默认选项。

-d or –decode

此选项用于解码来自标准输入或任何文件的任何编码数据。

-n or –noerrcheck

默认情况下,base64 在解码任何数据时都会检查错误。您可以使用 –n 或 –noerrcheck 选项来忽略解码时的检查。

-i, –ignore-garbage

该选项用于在解码时忽略非字母字符。

-u or –help

该选项用于获取有关该命令的使用信息。

示例 1 – 基本编码

在Linux中,默认安装base64包。因此,您可以轻松地从命令行使用它。要简单地对字符串或文本进行编码,您可以通过管道将其传递到命令行并获取编码后的文本。在此示例中,字符串 debugpoint.com 被编码为 base64。

echo "debugpoint.com" | base64

bash base64 编码和解码 – 示例 1

结果是 base64 编码的字符串。

解释

编码方法使用几个步骤来转换输入。输入的字符被转换为8位二进制值。整个二进制字符串集被分成 6 位二进制值,然后转换为十进制。

每个十进制值都通过 Base64 索引表转换为 Base64 字符。

在上面的示例中,第一个字符“d”被转换为二进制01100100。前 6 位是011001,即十进制的 25。 25指的是base64索引表中的Z。这对于整个文本流都是如此。请参阅下面的示例。

Base64 编码和解码 – 内部工作

示例 2 – 基本解码

要解码字符串,只需使用选项 --decode 将编码值传递给 base64 即可。它会给你准确的输入字符串。

bash base64 编码和解码 – 示例 2(解码同一示例)

示例 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.debugpoint.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"

自定义输入 – 使用脚本进行 Base64 编码和解码

示例 6 – 使用 base64 的简单身份验证

您可以使用上述编码和解码方法实现一个简单的身份验证系统。您可以要求用户输入密码或密码。然后将密码存储在文件中或即时进行比较。

如果存储的编码字符串与用户输入的编码文本匹配,则用户通过身份验证。然而,这是一种检查身份验证的直接方法,但有时对于简单的业务案例很有用。

#!/bin/bash
#Sample program to take input, encode to base64 and display on terminal
#Example by www.debugpoint.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

使用 bash base64 进行简单身份验证

结论

我希望您能够通过这些示例了解 Base64 编码和解码的基础知识。另外,了解一下其内部工作原理。如果这对您有帮助或需要有关此主题的其他教程,请在下面的评论框中告诉我。