通過示例來學(xué)習(xí) Bash 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
Bash base64 的編碼和解碼
句法
在我們提供示例之前,首先介紹 Base64 的基本語法。
- 選項(?
?Option?
?):參照下面的表格,你可以提供任何的選項或組合多個選項。 - 輸入(?
?INFILE?
?):你可以從標(biāo)準(zhǔn)輸入(如命令行)或文件中輸入。 - 輸出(?
?OUTFILE?
?):你可以將輸出重定向到標(biāo)準(zhǔn)輸出,如終端或文件中。
選項 | 描述 |
? | 此選項用于對標(biāo)準(zhǔn)輸入的數(shù)據(jù)或從文件中讀入的數(shù)據(jù)進(jìn)行編碼。這是默認(rèn)選項。 |
? | 此選項用于對標(biāo)準(zhǔn)輸入的數(shù)據(jù)或從文件中讀入的已 Base64 編碼數(shù)據(jù)進(jìn)行解碼。 |
? | 默認(rèn)情況下,Base64 在解碼數(shù)據(jù)時,會自動檢查是否有錯誤。你可以使用該選項在解碼時忽略檢查。 |
? | 此選項用于在解碼時忽略非字母字符。 |
? | 此選項用于獲取有關(guān)使用此命令的信息。 |
示例 1:基本編碼
在 Linux 中,默認(rèn)已安裝好 Base64 軟件包。因此,你可以輕松地從命令行使用 Base64。要對一個字符串或文本進(jìn)行編碼,你可以通過管道將其傳遞到 ??base64?
? 命令,并獲取待編碼的文本。在下面的示例中,對字符串 ??debugpoint.com?
? 進(jìn)行了 Base64 編碼。
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
示例 2:基本解碼
要解碼字符串,需要將編碼值傳遞給 ??base64?
? 命令,選項為 ??--decode?
?,它將輸出你之前輸入的字符串。
bash base64 encode and decode - example 2 (decode the same example)
示例 3:對文本文件進(jìn)行編碼
示例 1 中的同一命令也可用于編碼文本文件,并將輸出重定向到另一個文本文件。方法如下。
Encode a text file
示例 4:對文本文件進(jìn)行解碼
要解碼使用 Base64 編碼的文本文件,只需使用 ??--decode?
? 或 ??-d?
? 選項,并傳遞文本文件名。
示例 5:對用戶輸入的數(shù)據(jù)進(jìn)行編碼
使用 Bash shell 編程,你可以通過終端接收用戶的輸入,并對其進(jìn)行 Base64 編碼。你需要先編寫一個簡單的 shell 腳本,并在授予可執(zhí)行權(quán)限后執(zhí)行。
以下就是一個簡單的示例,它從用戶那里獲得輸入,然后進(jìn)行 Base64 編碼,最終顯示編碼的字符串。
Custom input - base64 encode and decode using script
示例 6:用 Base64 進(jìn)行簡單的身份認(rèn)證
你可以運(yùn)用上述的編碼和解碼方法,實現(xiàn)一個簡單的身份驗證系統(tǒng)。
如果存儲的編碼字符串與用戶輸入的文本再編碼的字符串相匹配,則用戶可以通過驗證。雖然這是一種檢查身份驗證的很簡單的方法,但有時這對一些簡單的業(yè)務(wù)案例很有用。
A Simple Authentication using bash base64
總結(jié)
我希望你能通過這些示例,學(xué)會 ??Base64?? 編碼和解碼的基礎(chǔ)知識。此外,你也了解到 Base64 的內(nèi)部編碼方式。