base64編解碼即使用


base64 編解碼及使用

前言

大部分尋找 base64,只是為了使用而已,所以先說如何使用。
不用尋找相關的 base64 庫,不用自己處理編解碼,直接調用瀏覽器自身 API。既然減少完全不必要加載的 js 文件。

應用

  1. Base64 解碼

    window.atob

例如:

window.atob('aGVsbG8gd29yZA==')
"hello word"
  1. Base64 編碼

    window.btoa

例如:

window.btoa('hello word')
"aGVsbG8gd29yZA=="

就是這么簡單!

兼容性: IE10+ 以后所有現代瀏覽器都支持,所以放棄 IE 吧!同時,不支持Unicode字符的編碼, 需配合encodeURIComponent、decodeURIComponent來使用。


這是一條迷人的分割線


base64 是什么?

引用百度百科的話:

Base64 是網絡上最常見的用於傳輸 8Bit 字節碼的編碼方式之一,Base64 就是一種基於 64 個可打印字符來表示二進制數據的方法。可查看 RFC2045 ~ RFC2049,上面有 MIME 的詳細規范。
Base64 編碼是從二進制到字符的過程,可用於在 HTTP 環境下傳遞較長的標識信息。采用 Base64 編碼具有不可讀性,需要解碼后才能閱讀。

有點拗口,即 base 是一種編碼方式,不是加密,不是加密,不是加密。

白話:選出 64 個字符集(實際上 65 個, A-Z,a-z,0-9,+,/,再加墊字符 = ),並將內容按照一定的規則轉換成字符集的字符。

索引表:

64 個 字符

A~Z -> 0~25
a~z -> 26~51
0~9 -> 52~61
+ -> 62
- -> 63

編碼規則:

  1. 每三個字節為一組,一共是 24 個二進制位。

  2. 將 24 個二進制位分為四小組,每小組 6 個二進制位。

  3. 在每小組前面加上 00,構成 32 為二進制,即 4 個字節。

例如:

"Cat"

C  ASCII 十進制:67  二進制:0100 0011
a  ASCII 十進制:97  二進制:0110 0001
t  ASCII 十進制:116 二進制:0111 0100

合起來為:0100 0011 0110 0001 0111 0100
分為四組:010000 110110 000101 110100
添加前綴:00010000 00110110 00000101 00110100
對應的十進制值為:16 54 5 54

對應上面的索引表:Q2F0

  • 字節數不足 3 的情況:

    • 2 個字節的情況:

      2 個字節的一共 16 個二進制位,按照上面的規則,轉成三組,分別為6,6,4,最后一組除了前面加兩個 0 以外,后面也要加兩個 0。這樣得到一個三位的 Base64 編碼,同時在末尾補上一個"="號。

      'Hi'
      
      H ASCII 十進制:72  二進制:0100 1000
      i ASCII 十進制:105 二進制:0110 1001
      
      即:0100 1000 0110 1001
      拆:010010 000110 1001
      補:00010010 00000110 00100100
      組:18 6 36
      對應索引:SGk=
      
      
    • 1 個字節的情況:

      將8位二進制,分為2組,6和2,最后一組2為,前面補兩個0,后面補4個0。構成16位兩個字節, 並在末尾補上兩個==號。

          'H'
          
          H ASCII 十進制:72  二進制:0100 1000
      
          拆:010010 00
          補:00010010 00000000
          組:18 0
          對應索引:SA==
      
      

其他字符自詢搜索 ASCII 表

解碼

解碼其實就是一個逆推的過程。

  1. 每4個字符為一組,查找字符其索引值。

  2. 將其索引值,轉為二進制,並將每個二進制前面的00去掉

  3. 將剩下的24位二進制轉為分為3份,組成3個字節

  4. 查找ASCII表,組成字符串。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM