常見問題
Base64 是加密嗎? 不是。Base64 只是「編碼」:把任意位元組轉成只用 A–Z、a–z、0–9、+、/ 這 64 個安全字元表示,方便在只吃文字的管道(HTML、JSON、email)夾帶資料。它沒有金鑰,任何人拿到都能立刻解開,絕不能當成加密來保護密碼或個資。需要保密請用真正的加密(如 AES)或雜湊(如密碼專用的 bcrypt)。
為什麼檔案轉成 Base64 會變大約 33%? Base64 每 3 個位元組(24 bit)用 4 個字元表示,每個字元只攜帶 6 bit,體積固定膨脹 4/3 ≈ +33%;若勾選 data URL 再加上前綴(如 data:image/png;base64,)會再多一點。這是編碼機制的必然代價,不是工具做得不好。
為什麼中文用 btoa() 直接編碼會出錯? 網頁內建的 btoa() 一次只接受一個位元組(0–255)的字元,而中文一個字在 UTF-8 下是 3 個位元組,直接丟進去會噴 InvalidCharacterError 或產生錯誤結果。正確做法是先用 TextEncoder 把文字轉成 UTF-8 位元組、再對位元組做 Base64——本工具就是這樣處理的,所以「工具」或「🛠️」這類內容都能正確編碼後再解回來。
想延伸閱讀單位、IP、網域與資安觀念,請見全部文章總覽。