自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

通過示例來學(xué)習(xí) Bash base64 的編碼和解碼

系統(tǒng) Linux
你想了解 Base64 編碼和解碼的方法嗎?在本教程中,我們使用 Bash shell 腳本和各種示例解釋了 Base64 編碼和解碼步驟。

Base64 編碼方法可以將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為文本,如此編碼數(shù)據(jù)可以在任何通信媒介進(jìn)行傳輸。這種編碼方法主要用于電子郵件加密的過程。

總體而言,Base64 編碼方法是一種二進(jìn)制到文本的編碼方案,以 ASCII 字符串格式表示 8 字節(jié)的二進(jìn)制數(shù)據(jù)。使用這種編碼方法在各種媒介之間傳輸數(shù)據(jù)時有幾個優(yōu)勢,尤其是對于那些能可靠地支持文本內(nèi)容的媒介。因此,Base64 編碼方法在萬維網(wǎng)上被廣泛使用。這種編碼方案最常用于電子郵件附件的編碼上。

根據(jù) Base64 編碼表,二進(jìn)制數(shù)據(jù)可以經(jīng) Base64 編碼后可以轉(zhuǎn)換為 64 個不同的 ASCII 字符,包含大寫字母 ??A?? 到 ??Z??,小寫字母 ??a?? 到 ??z??,數(shù)字 ??0?? 到 ??9??,以及符號 ??+?? 和 ??/??,這些字符在傳輸和打印上十分便捷。

這 64 個 ASCII 字符代表著從 ??000000?? 到 ??111111?? 的二進(jìn)制值。每個非末尾的 Base64 編碼字符恰好代表 6 位二進(jìn)制值。

Base64 Index Table

Base64 Index Table

Bash base64 的編碼和解碼

句法

在我們提供示例之前,首先介紹 Base64 的基本語法。

base64 [OPTIONs] [INFILE] [OUTFILE]
  • 選項(??Option??):參照下面的表格,你可以提供任何的選項或組合多個選項。
  • 輸入(??INFILE??):你可以從標(biāo)準(zhǔn)輸入(如命令行)或文件中輸入。
  • 輸出(??OUTFILE??):你可以將輸出重定向到標(biāo)準(zhǔn)輸出,如終端或文件中。

選項

描述

??-e??? 或者 ??--encode??

此選項用于對標(biāo)準(zhǔn)輸入的數(shù)據(jù)或從文件中讀入的數(shù)據(jù)進(jìn)行編碼。這是默認(rèn)選項。

??-d??? 或者 ??--decode??

此選項用于對標(biāo)準(zhǔn)輸入的數(shù)據(jù)或從文件中讀入的已 Base64 編碼數(shù)據(jù)進(jìn)行解碼。

??-n??? 或者 ??--noerrcheck??

默認(rèn)情況下,Base64 在解碼數(shù)據(jù)時,會自動檢查是否有錯誤。你可以使用該選項在解碼時忽略檢查。

??-i??? 或 ??--ignore-garbage??

此選項用于在解碼時忽略非字母字符。

??-u??? 或者 ??--help??

此選項用于獲取有關(guān)使用此命令的信息。

示例 1:基本編碼

在 Linux 中,默認(rèn)已安裝好 Base64 軟件包。因此,你可以輕松地從命令行使用 Base64。要對一個字符串或文本進(jìn)行編碼,你可以通過管道將其傳遞到 ??base64?? 命令,并獲取待編碼的文本。在下面的示例中,對字符串 ??debugpoint.com?? 進(jìn)行了 Base64 編碼。

echo "debugpoint.com" | base64

bash base64 encode and decode - example 1

bash base64 encode and decode - example 1

結(jié)果是經(jīng)過 Base64 編碼后的字符串。

解釋

Base64 編碼方法使用下面的幾個步驟來轉(zhuǎn)換輸入的數(shù)據(jù)。首先,每個輸入字符轉(zhuǎn)換為 8 位二進(jìn)制值,接著,二進(jìn)制字符串拆分為一組組 6 位的二進(jìn)制值,然后,每個 6 位的二進(jìn)制值被轉(zhuǎn)換為十進(jìn)制值。

最后,每個十進(jìn)制值都通過 Base64 編碼索引表轉(zhuǎn)換為 Base64 字符。

在上面的示例中,第一個字符 ??d?? 被轉(zhuǎn)換為二進(jìn)制 ??01100100??。前 6 位是 ??011001??,轉(zhuǎn)換為十進(jìn)制是 ??25??。??25?? 在 Base64 編碼索引表中對應(yīng)著 ??Z??。整個輸入的文本流都像如此編碼。請參閱以下編碼過程的示例。

Base64 Encode and Decode – inner working

Base64 Encode and Decode – inner working

示例 2:基本解碼

要解碼字符串,需要將編碼值傳遞給 ??base64?? 命令,選項為 ??--decode??,它將輸出你之前輸入的字符串。

bash base64 encode and decode - example 2 (decode the same example)

bash base64 encode and decode - example 2 (decode the same example)

示例 3:對文本文件進(jìn)行編碼

示例 1 中的同一命令也可用于編碼文本文件,并將輸出重定向到另一個文本文件。方法如下。

base64 example3.txt > example3-encoded.txt

Encode a text file

Encode a text file

示例 4:對文本文件進(jìn)行解碼

要解碼使用 Base64 編碼的文本文件,只需使用 ??--decode?? 或 ??-d?? 選項,并傳遞文本文件名。

base64 -d example3-encoded.txt

示例 5:對用戶輸入的數(shù)據(jù)進(jìn)行編碼

使用 Bash shell 編程,你可以通過終端接收用戶的輸入,并對其進(jìn)行 Base64 編碼。你需要先編寫一個簡單的 shell 腳本,并在授予可執(zhí)行權(quán)限后執(zhí)行。

以下就是一個簡單的示例,它從用戶那里獲得輸入,然后進(jìn)行 Base64 編碼,最終顯示編碼的字符串。

    #!/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"

Custom input - base64 encode and decode using script

Custom input - base64 encode and decode using script

示例 6:用 Base64 進(jìn)行簡單的身份認(rèn)證

你可以運(yùn)用上述的編碼和解碼方法,實現(xiàn)一個簡單的身份驗證系統(tǒng)。

如果存儲的編碼字符串與用戶輸入的文本再編碼的字符串相匹配,則用戶可以通過驗證。雖然這是一種檢查身份驗證的很簡單的方法,但有時這對一些簡單的業(yè)務(wù)案例很有用。

    #!/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

A Simple Authentication using bash base64

A Simple Authentication using bash base64

總結(jié)

我希望你能通過這些示例,學(xué)會 ??Base64?? 編碼和解碼的基礎(chǔ)知識。此外,你也了解到 Base64 的內(nèi)部編碼方式。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2014-02-20 10:28:28

JavaScriptBase64

2023-03-01 11:02:12

2024-07-31 10:22:49

Go語言編碼

2021-09-07 08:59:09

編碼Base64解碼

2024-07-11 08:42:57

2025-02-11 00:00:10

Base64編碼二進(jìn)制

2024-02-28 23:07:42

GolangBase64編碼

2021-03-05 09:10:19

base64編碼

2023-11-07 08:35:26

2022-06-06 08:31:05

Base64編碼Base58

2019-08-09 11:40:38

JavaScriptCSS技術(shù)

2021-11-25 08:11:47

JS網(wǎng)站信息

2021-02-05 05:26:33

字節(jié)ASCII控制

2019-07-23 08:55:46

Base64編碼底層

2016-12-13 13:50:06

JAVA轉(zhuǎn)換Base64

2021-08-26 05:27:08

Base64 字節(jié)流算法

2010-03-03 16:14:05

Python base

2025-04-23 00:04:00

2025-01-14 12:18:06

Base64加解密字符

2023-01-26 00:31:25

ASCIIBase64UTF-8
點贊
收藏

51CTO技術(shù)棧公眾號