Base64 編碼解碼原理
Base64編碼,是我們程式開發中經常使用到的編碼方法。它是一種基於用64個可列印字元來表示二進位制資料的表示方法。它通常用作儲存、傳輸一些二進位制資料編碼方法!也是MIME(多用途網際網路郵件擴充套件,主要用作電子郵件標準)中一種可列印字元表示二進位制資料的常見編碼方法!它其實只是定義用可列印字元傳輸內容一種方法,並不會產生新的字符集!有時候,我們學習轉換的思路後,我們其實也可以結合自己的實際需要,構造一些自己介面定義編碼方式。好了,我們一起看看,它的轉換思路吧!
Base64實現轉換原理
它是用64個可列印字元表示二進位制所有資料方法。由於2的6次方等於64,所以可以用每6個位元為一個單元,對應某個可列印字元。我們知道三個位元組有24個位元,就可以剛好對應於4個Base64單元,即3個位元組需要用4個Base64的可列印字元來表示。在Base64中的可列印字元包括字母A-Z、a-z、數字0-9 ,這樣共有62個字元,此外兩個可列印符號在不同的系統中一般有所不同。但是,我們經常所說的Base64另外2個字元是:“+/”。這64個字元,所對應表如下。
轉換的時候,將三個byte的資料,先後放入一個24bit的緩衝區中,先來的byte佔高位。資料不足3byte的話,於緩衝區中剩下的bit用0補足。然後,每次取出6個bit,按照其值選擇
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
中的字元作為編碼後的輸出。不斷進行,直到全部輸入資料轉換完成。
如果最後剩下兩個輸入資料,在編碼結果後加1個“=”;如果最後剩下一個輸入資料,編碼結果後加2個“=”;如果沒有剩下任何資料,就什麼都不要加,這樣才可以保證資料還原的正確性。
編碼後的資料比原始資料略長,為原來的4/3。無論什麼樣的字元都會全部被編碼,因此不像Quoted-printable 編碼,還保留部分可列印字元。所以,它的可讀性不如Quoted-printable編碼!
M的Ascii碼是77,前六位對應值為19,對應base64字元是T,如此類推。其它字元編碼就可以自動轉換得到!我們看看另外不是剛好是3個位元組的情況!
相關文章
- base64 編碼原理
- 從原理上搞定編碼-- Base64編碼
- 【字元編碼系列】Base64編碼原理以及實現字元
- base64編碼原理和函式函式
- base64編碼的原理及實現
- Base64編碼與解碼程式碼例項
- 用JS進行Base64編碼、解碼JS
- CryptoAPI 對資料Base64編碼解碼API
- Base64編碼
- Base64編碼知識詳解
- Rust中字串的base64編碼與解碼Rust字串
- C#實現Base64編碼與解碼
- URL編碼與解碼原理
- 關於base64編碼的原理及實現
- 【字元編碼】字元編碼 && Base64編碼演算法字元演算法
- 深入瞭解圖片Base64編碼
- Base64系列第二篇 python中使用Base64編碼解碼Python
- 計算機編碼規則之:Base64編碼計算機
- JavaScript base64解碼程式碼JavaScript
- Notepad++外掛Base64編解碼
- Java之Base64編碼解析Java
- Java 8中的Base64編碼和解碼Java
- 【Java小工匠】密碼學--base64編碼Java密碼學
- PHP安全的URL字串base64編碼和解碼PHP字串
- Postman進行簡單的base64編碼解碼請求測試Postman
- JS 簡單實現UTF-8編碼,Base64編碼JS
- rust實戰系列-base64編碼Rust
- Java Base64編碼使用介紹Java
- Base64編碼的全面介紹
- android Java BASE64編碼和解碼一:基礎AndroidJava
- Base64自定義編碼表及破解
- 一文搞懂影片編解碼原理
- Mysql編碼, Mysql編碼流程, Mysql編碼順序, Mysql編碼原理, Mysql編碼修改依據MySql
- Base64加密解密原理以及程式碼實現加密解密
- Android 使用Base64編碼圖片後上傳伺服器的原理Android伺服器
- 用於將位元組進行base64編碼或解碼(C語言實現)C語言
- Base64 編碼的程式設計使用.md程式設計
- 將ttf檔案base64編碼後使用