一、Base64的基本概念
Base64是一種將二進制數據轉換成可打印字符的編碼方式。它將3個字節的數據轉換成4個可打印字符,很多地方都會用到Base64編碼,例如HTTP協議基本認證,圖片在瀏覽器中的顯示等。
二、Base64的原理
在Base64編碼中,每3個字節的數據被轉換成了4個可打印字符。具體的過程是:先將這三個字節按照8位一組,一共24位。然後將這24位按照6位一組,分成4組,分別對應Base64編碼表中的4個字符。
例如,假設需要編碼的數據為”abc”,它的ASCII碼分別為97、98、99,轉換成二進制就是01100001、01100010、01100011,將它們按照8位一組合併就是011000010110001001100011,分成4組,分別是011000、010110、001001、100011,這4個6位的二進制數對應的Base64編碼表中的字符分別是”Y”、”W”、”J”、”j”,所以”abc”的Base64編碼就是”YWJj”。
三、Base64編碼的優缺點
1、優點
(1)Base64編碼可以將二進制數據轉換成可打印字符,方便數據傳輸和閱讀。
(2)Base64編碼比較簡單,加密與解密效率比較高,適用於輕量級傳輸。
(3)Base64編碼可以防止數據在傳輸過程中被篡改。
2、缺點
(1)Base64編碼會增加數據的長度,每3個字節轉換成4個字符,會增加33%的數據長度。
(2)Base64編碼並不是真正意義上的加密,因為Base64編碼只是一種字符轉換,易被破解。
四、文件Base64的轉換
1、文件Base64的編碼
function fileToBase64(file) { let reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { console.log(reader.result); } }
上述代碼是將文件轉換成Base64編碼的一種簡單方法。通過FileReader API中的readAsDataURL方法讀取文件,然後在onload事件中獲取到轉換完成的Base64編碼。
2、文件Base64的解碼
function base64ToFile(base64Str, fileName, type) { let arr = base64Str.split(','); let mime = arr[0].match(/:(.*?);/)[1]; let bstr = atob(arr[1]); let n = bstr.length; let u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new File([u8arr], fileName, {type: type || mime}); }
上述代碼是將Base64編碼轉換成文件的一種方法。通過atob方法解碼Base64字符串,然後將解碼後的結果轉換成8位無符號整數數組,並通過Uint8Array封裝成File對象。
五、Base64的應用場景
1、圖像處理
在瀏覽器中,可以通過使用標籤的src屬性來顯示Base64編碼或者圖片的URL,這種方式可以減少請求次數,提高網頁的訪問速度。同時,對於一些小的圖片,將其轉換成Base64編碼可以減少請求的大小,進而提高性能。
2、消息傳輸
在進行數據傳輸時,由於一些原因(例如網絡環境不穩定、數據量過大等),會導致數據的傳輸過程中丟失或損壞。在這種情況下,使用Base64編碼可以增加數據的可讀性,使得數據更容易被複原。
3、密碼學
在密碼學中,Base64編碼經常用來將二進制數據轉換成字符串或文本形式。例如,在使用PKCS#12格式的證書時,證書中包含的密鑰信息需要使用Base64編碼,以便在數據傳輸過程中不會被篡改或損壞。
原創文章,作者:MMKU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131328.html