你们好,我是良许。
众所周知,编码是将数据转换为有效传输或储存所需格式的过程。相反,解码是将编码数据转换回其原始格式的过程。昨晚在这儿向你们介绍一下Base64编码和解码linux操作系统好吗,便于你们理解与学习。
Base64是将二补码数据转换为ASCII的编码方法之一。一般,当二补码数据传输到难以正确处理二补码数据的系统(基于文本的系统)时会出现传输问题,例如信息在传输过程中的遗失或破损。在这些情况下,Base64编码就可以防止出现上述情况。
Base64编码的一些用途是:
●数据压缩
●数据隐藏
●以另一种格式传输数据
对于编码数据,Base64只准许使用字母、数字和=符号。诸如,c2FtcGxlCg==是有效的编码数据,而HV3.Zh2J==不是有效的编码数据。
在本文中,我们将解释怎样使用Base64命令对字符串或文件中的数据进行编码和解码。
Base64句型
下边是使用Base64进行编码的句型:
$ base64 [OPTION] [FILE]
Base64选项
可以与Base64命令一起使用的一些命令行选项包括:
解码文件或字符串:
-d or --decode
显示有关Base64用法的帮助信息:
--help
解码时使用下边选项可忽视非字母字符:
-i, --ignore-garbage
显示版本信息:
--version
编码字符串
我们可以使用Base64命令轻松地对字符串进行编码。比如,要将示例文本“WelcometoLinux”以Base64形式编码linux系统编码格式,可以使用如下命令:
$ echo “Welcome to Linux” | base64
此命令将使用Base64对字符串中的文本进行编码,并将编码的文本复印到标准输出,如下边的屏幕截图所示:
也可以使用重定向操作符(>)将编码输出保存到文件中,而不是复印到标准输出。以下命令将对文本进行编码并将输出保存到名为“encodedfile.txt“的文件中:
$ echo “Welcome to Linux” | base64 > encodedfile.txt
要查看编码文件,可以使用cat命令:
$ cat encodedfile.txt
解码字符串
也可以使用–decode或-d选项解码Base64编码的文本。比如,要解码Base64编码文本“V2VsY29tZSB0byBMaW51eAo=”,命令是:
$ echo “V2VsY29tZSB0byBMaW51eAo=” | base64 --decode
这个命令将解码Base64中的编码文本,以及在标准输出中复印原始文本,如右图所示:
也可以使用重定向操作符(>)将解码后的输出保存到文件中,而不是复印到标准输出。以下命令可以解码编码文本并将原始文本保存到名为“decodedfile.txt“的文件中:
$ echo “V2VsY29tZSB0byBMaW51eAo=” | base64 –decode > decodedfile.txt
编码文本文件
Base64命令也可用于对文本文件进行编码。如,对名为“testfile.txt”进行编码,则命令为:
$ base64 testfile.txt
此命令将对指定的文本文件进行编码,并在标准输出上复印其编码方式,如下边的屏幕截图所示。
也可以使用重定向操作符(>)将解码后的输出保存到文件中,而不是复印到标准输出。使用以下命令可以解码编码文本并将原始文本保存到名为“decodedfile.txt的文件,这个文件可以使用cat命令查看。该命令是:
$ base64 -d encodedfile.txt > decodedfile.txt
编码用户输入
使用Base64编码,可以对任何用户提供的数据进行编码。因此linux 分区,我们须要创建一个接受用户输入的脚本,使用Base64编码对其进行编码,并在标准输出上复印编码的数据.
使用以下代码创建脚本“test.sh”:
#!/bin/bash
# Print message to ask for input
echo "Provide Some data to encode"
# Save the input to a variable named “data”
read data
# Encode using base64 encoding and save the output to a variable “encod_data”
encod_data=`echo -n $data | base64`
# Print encoded output
echo "Encoded text is : $encod_data"
按如下形式运行脚本:
$ ./test.sh
运行脚本后,系统将要求你输入要编码的数据。输入一些数据后并按Enter键,就可以在屏幕上接收编码输出了。
验证用户秘钥
如今让我们看一个Base64解码的反例。我们将使用Base64解码来检测用户的有效性。因此,我们须要创建一个脚本,向用户恳求秘钥。该秘钥将首先通过Base64解码进行解码,之后它将匹配输入秘钥与预定义秘钥。假如用户输入的秘钥与预定义的秘钥匹配,则会复印“您已输入有效秘钥”消息,否则linux系统编码格式,在屏幕上复印的则是“您输入的秘钥无效”。
使用以下代码创建脚本“test1.sh”:
#!/bin/bash
# Print message to ask for input
echo "Enter your key"
# Save the key provided by the user to a variable named "key"
read key
# Decode the encoded key (QWJjMTIzCg) and save the output to a variable named “orig_key”
orig_key=`echo 'QWJjMTIzCg==' | base64 --decode`
# Compare the key entered by the user with the decoded key
if [ $key == $orig_key ]; then
#if key matches, print this:
echo "You have entered a valid key"
else
#if key does not match, print this:
echo "The key you have entered is not valid"
fi
按如下形式运行脚本:
$ ./test1.sh
运行脚本后,系统将要求你提供秘钥,键入秘钥并按Enter键。倘若输入的秘钥与预定义的解码秘钥匹配,您将收到“您已输入有效秘钥”的消息,否则屏幕中将显示“您输入的秘钥无效”的消息。
以上就是如何以命令行来使用Base64对字符串或文件进行编码和解码。结果可以复印在标准输出上,也可以保存在文件中。并且,值得注意的是,编码与加密不同,编码很容易泄漏编码的数据,因而不建议使用编码传输敏感数据。