全网最优质的Base64 编码和解码教程,附6个示例!
base64 编码可以将二进制数据转换为文本格式,并且能够在任何通信介质上传输数据。
这个编码应用场景非常多,比如电子邮件的加密等。
Base64 方法通常是一种二进制到文本编码方案,它表示 8 字节二进制数据到 ASCII 字符串格式,在各种媒体之间传输或引导数据时,有很多优点,特别是对于文本的支持。
根据 Base64 表示表,二进制数据可以转换为 64 种不同的 ASCII 字符,这种转换易于传输和打印。
使用字母 A 到 Z、a 到 Z、0 到 9 和 + 和 /,总共 64 个 ASCII 字符来表示从 000000 到 111111 的二进制,每个非最终 Base64 数字正好代表 6 位数据。
Bash base64 编码和解码
语法
base64 [参数] [输入文件] [输出文件]
- 参数:参数如下。
- 输入文件:可以从标准输入(如命令行)或文件中获取输入。
- 输出文件:可以将输出重定向到标准输出,如终端或文件。
(1)参数 -e 或 –encode :
用于对来自标准输入或任何文件的任何数据进行编码,是默认选项。
(2)参数 -d 或 –decode :
用于解码来自标准输入或任何文件的任何编码数据。
(3)参数 -n 或 –noerrcheck
默认情况下,base64 在解码任何数据时都会检查错误,可以使用 –n 或 –noerrcheck 选项在解码时忽略检查。
(4)参数 -i 或 –ignore-garbage
用于在解码时忽略非字母字符。
(5)参数 -u 或 -help
用于获取有关此命令的用法的信息。
示例 1 – 基本编码
在 Linux 中,默认安装 base64 包,因此,您可以轻松地在命令行使用它,要简单地对字符串或文本进行编码,可以通过管道将其传递到命令行并获取编码后的文本。
在下面示例中,字符串 wljslmz.cn 被编码为 base64。
echo "wljslmz.cn" | base64
输出:
d2xqc2xtei5jbgo=
解释
编码方法使用几个步骤来转换输入:
- 输入字符被转换为 8 位二进制值
- 整组二进制字符串拆分为 6 位二进制值
- 转换为十进制
- 每个十进制值都通过 base64 索引表转换为 base64 字符
示例 2 – 基本解码
要解码字符串,只需使用参数 –decode 将编码值传递给 base64,它解码刚刚输入的字符串。
echo "d2xqc2xtei5jbgo=" | base64 --decode
示例 3 – 编码文本文件
可以使用相同的命令对文本文件进行编码并将输出重定向到另一个文本文件:
base64 wljslmz.txt > wljslmz-encode.txt
示例 4 – 解码文本文件
要解码使用 base64 编码的文本文件,只需使用 –decode 或 -d 开关并传递文本文件名。
base64 -d wljslmz-encode.txt
示例 5 – 对来自用户的自定义输入进行编码
使用 bash shell 编程,您可以通过终端从用户那里获取输入并对其进行编码,但是为此您需要编写一个简单的 shell 脚本并在授予可执行权限后执行它。
以下例子可以做参考:
#!/bin/bash
#欢迎来到运维漫谈!!!
#可以输入wljslmz.cn
echo "请输入需要base64编码的字符::"
read input_text
output_text=`echo -n $input_text | base64`
echo "Base64编码后字符: $output_text"
示例 6 – 使用 base64 的简单身份验证
使用上面的编码和解码方法,就可以实现一个简单的认证系统。
您可以要求用户输入密码或密码,然后将密码存储到文件中或进行动态比较,如果存储的编码字符串与用户输入的编码文本匹配,则用户通过身份验证。
这是一种非常简单的验证身份验证方式,有时对于简单的商业案例很有用。
#!/bin/bash
#欢迎来到运维漫谈,这是一个简单的脚本,用base64编码
#使用debugpoint.cn为例
echo "验证你的密码"
read pwd1
decoded_text=`echo 'd2xqc2xtei5jbg==' | base64 --decode`
if [[ $pwd1 == $decoded_text ]]
then
echo "主人你好!"
else
echo "你是坏人,验证不通过!!!"
fi
下面来试试这个脚本:
总结
以上我们通过几个例子给大家详细介绍了base64编码的原理与使用,想必只要好好看上文,一定会有所收获,心动不如手动,下面大家就打开命令行,疯狂的敲吧。
- 点赞
- 收藏
- 关注作者
评论(0)