簡述Base64算法

嚴格來說,我們今天文章的主角Base64并不是加密算法,而是一種將二進制數(shù)據(jù)轉(zhuǎn)換為可打印字符的編碼方式。但在實際網(wǎng)絡(luò)應(yīng)用領(lǐng)域,不少人還是會將BASE64編碼誤稱為“加密”。下面,我們就一起來了解一下Base64算法。

Base64算法簡介

Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,可用于在HTTP環(huán)境下傳遞較長的標識信息。由于采用Base64編碼具有不可讀性,需要解碼后才能閱讀。所以,不少人也將其視為加密算法。但Base64并不安全,經(jīng)過簡單的解碼(逆運算)就可以看到原文。

Base64算法的原理

Base64 算法的原理,是將輸入流中的字節(jié)按每 3 個分為一組,然后每次取 6 個比特,將其轉(zhuǎn)換成表格中對應(yīng)的數(shù)據(jù),一直重復(fù)到?jīng)]有剩余的字符為止。以UTF-8 編碼為例,轉(zhuǎn)換表格如下:

Base64

Base64算法的編碼過程

假設(shè)我們要對字符串 S.H 進行編碼:

  1. 將其轉(zhuǎn)換成十六進制為 53、2e、48
  2. 再將十六進制轉(zhuǎn)換成二進制,分別為 01010011、00101110、01001000。這里不足 8 個比特的高位補 0 即可。
  3. 將其每6個比特分為一組,分別為 010100、110010、111001、001000
  4. 將其轉(zhuǎn)換成十進制得到,20、50、57、8
  5. 再根據(jù)表格中的轉(zhuǎn)換關(guān)系轉(zhuǎn)換可得,U、y、5、I

換句話說,字符串 S.H 通過 Base64 算法編碼之后的結(jié)果為 Uy5I 。

Base64

Base64算法的解碼原理

因為最終的編碼產(chǎn)物中,如果 6 個比特的分組不滿 4 組,會有 = 作為填充物,所以一個 base64 完后的產(chǎn)物總是能夠被 4 整除。

所以,在解密中,我們每次需要處理 4 個字符,將這 4 個字符編碼之后轉(zhuǎn)換成十進制,再轉(zhuǎn)換成二進制,不足 6 位的高位補0,然后將 6 個比特一組的二進制數(shù)按原順序重新分成每 8 個比特一組,也就是一個字節(jié)一組。然后將其轉(zhuǎn)換成十六進制,再轉(zhuǎn)換成對應(yīng)的字符。

Base64算法的解碼過程

  1. 假設(shè)我們需要解密的字符為 Uy5I,解密過程就為:
  2. 按照每次處理4個字符的原理,根據(jù)表格將其分別轉(zhuǎn)換成十進制20、50、57、8
  3. 再將其轉(zhuǎn)換成二進制,不足六位的高位補0,再將其分成每 8 個比特一組
  4. 將分組好的比特轉(zhuǎn)換成十六進制,得到53、2e、48
  5. 最后將十六進制轉(zhuǎn)換成字母得到S、.、H,也就是 S.H

Base64


最后,小編提醒大家,Base64編碼不是用來加密的,也不是加密算法。它只是用來編碼的,切記不可用于加密重要數(shù)據(jù)。

免責聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。