裝置與系統問題
Base64不是加密:它真正在做什麼、如何解碼
Base64是編碼,不是加密。為何藏不住密碼、為何體積變大,以及如何解碼。
Base64是編碼,不是加密。它把二進位轉成文字導向系統可以儲存或傳送的文字形式。
手上有Base64文字的人通常就能解碼。不需要密碼或密鑰。
不要用Base64保護密碼、API金鑰、存取權杖、私人訊息或其他機密。它是表示工具,不是安全機制。
字串看起來亂成一團,不代表已加密。Base64只改變位元組寫成文字的方式。
Base64真正在做什麼?
Base64用有限的ASCII編碼二進位:A–Z、a–z、0–9、+ 與 /。可用 = 補位,讓輸出長度維持4的倍數。補位並非一定存在——短輸入可能有一個或兩個 =,有些格式會省略。
Hello
Hello
Base64
SGVsbG8=
解碼 SGVsbG8= 會再次得到 Hello。這趟來回不需要金鑰。
- 原始資料
- Hello
- Base64編碼
- SGVsbG8=
- Base64解碼
- Hello
Base64與加密差在哪?
Base64用於表示與相容,不隱藏內容。加密用於保密,並使用密碼學金鑰材料。解碼Base64不是解密。公開金鑰系統也使用金鑰;應說「適當的密碼學金鑰」,而不是「每種加密都共用一個秘密」。雜湊是第三種概念:摘要,不是可逆編碼。
- 編碼
- 沒有密鑰
- 任何人都能還原
- 加密
- 密碼學保護
- 解密需要正確的金鑰
三種不同的工作:
| 方法 | 主要用途 | 是否需要秘密 |
|---|---|---|
| Base64 | 把資料編碼成文字 | 否 |
| 加密 | 保護機密性 | 是 / 金鑰材料 |
| 雜湊 | 單向摘要 | 無法解密 |
Base64安全嗎?
Base64本身不提供機密性。文字可能顯得不透明,但那不是安全功能。一般解碼器就能還原位元組。這不表示「Base64作為技術不安全」。它是普通編碼,不是安全機制。安全取決於周圍的系統與控制。
能用Base64隱藏密碼或API金鑰嗎?
不能當作保護。把密碼、API金鑰、存取權杖或私人資料編成Base64並不會保護它們。取得編碼字串的人通常就能解碼。需要保密時,使用真正的機密儲存與加密。
既然不是加密,為什麼還用Base64?
預期文字的系統往往帶不了原始二進位。Base64用來在文字格式中表示二進位、嵌入小型二進位資源、經純文字通道傳送位元組、建立Data URL、出現在部分郵件/MIME情境,以及在架構要求Base64時填入API酬載。API使用Base64不是「為了安全」,而是為了相容。
為什麼Base64會讓資料變大?
標準含補位的Base64把3個輸入位元組對應成4個字元。長度是 4 × ceil(n / 3),n是輸入位元組數。3位元組變成4字元,6位元組變成8字元。對較大的原始酬載大約大33%,約三分之一。小輸入因補位看起來不同:1位元組變成 QQ==(4個字元)。JSON引號、Data URL前綴、壓縮或額外傳輸編碼還會改變儲存或傳送的大小。Base64不壓縮資料。
什麼是Base64URL?
Base64URL是同一種編碼、對URL與檔名較安全的變體——不是加密。+ 變成 -,/ 變成 _,補位常被省略。Base64 編碼解碼 可以編解碼標準Base64與Base64URL。補位規則取決於規格。本工具不是JWT解碼器。
Base64能編碼圖片和檔案嗎?
能。圖片、PDF與其他二進位檔可以變成Base64文字表示。Base64不壓縮這些檔案。編碼後的文字通常比原始位元組更大。
什麼是Base64 Data URL?
Data URL可以把媒體類型、編碼標記與編碼後的位元組放在同一個字串裡:
data:image/png;base64,...
對小型資產很方便。把大檔放進Data URL並不總是好主意:字串變長,頁面可能變慢。把它當作取捨,而不是預設做法。
編碼、加密與雜湊
編碼(包括Base64)用於表示,無需秘密即可還原。加密用於保密,涉及密碼學金鑰材料。雜湊產生一般設計為單向的摘要。輸出長度取決於演算法——SHA-256與SHA-512大小不同。產生 Hash 可以顯示這些摘要;它不加密,也不代替Base64做編碼。
常見的Base64錯誤
把Base64當成加密
它只改變位元組作為文字的樣子。
把機密存成純Base64
拿到編碼值的人就能解碼。
以為Base64會壓縮資料
不會。文字形式通常更大。
忘記體積增加
大型原始酬載按大約多三分之一來規劃。
混淆Base64與Base64URL
字母表不同。解碼器可能拒絕錯誤變體。
用錯誤的字元編碼解碼
Base64還原的是位元組。文字仍需要對應的編碼,通常是UTF-8。
以為 = 一定會出現
補位只在需要時使用。有些字串沒有。
為什麼Unicode文字會讓Base64出問題?
Base64處理的是位元組,不是字元。文字必須先變成位元組——通常是UTF-8。韓文、日文、阿拉伯文與表情需要這一步。瀏覽器的 btoa() 處理Unicode字串可能失敗。Base64 編碼解碼 編碼UTF-8位元組,因此這類文字可以來回轉換。若用錯誤字元集解碼,Base64可能有效,文字仍會看起來不對。
Base64不提供機密性。拿到編碼值的人通常就能解碼。不要把看起來亂的文字當成受保護的機密。
在瀏覽器中編碼或解碼Base64
NEXNARA Base64 編碼解碼 在本機轉換UTF-8文字與檔案。
你可以編解碼標準Base64與Base64URL,把檔案變成原始Base64或Data URL,再把Base64或Data URL變回下載。無效輸入會被拒絕而不是當機。空白會被忽略;缺少的補位會補上。
超過10 MB的檔案可能讓分頁變慢。超過32 MB的檔案不會在瀏覽器中處理。
Base64處理本身在瀏覽器中完成。此工具不會把文字或檔案送到NEXNARA伺服器。廣告與其他網站功能仍使用網路;那與處理分開。
需要編碼或解碼Base64?開啟 Base64 編碼解碼,貼上文字或放入檔案。
FAQ
Base64是加密嗎?
不是。Base64是編碼。它改變表示。它不保護機密性。
Base64安全嗎?
Base64不是安全機制。它是普通編碼。手上有文字的人通常就能解碼。安全取決於系統的其餘部分。
不用密碼也能解碼Base64嗎?
能。標準解碼器就夠。Base64本身不需要密碼或密鑰。
為什麼Base64會增加檔案大小?
標準含補位的Base64中,每3位元組變成4個字元(長度 4 × ceil(n / 3))。對較大的原始酬載大約多33%。極小的輸入上,補位會改變比例。
Base64和Base64URL有何不同?
Base64URL用 - 與 _ 代替 + 與 /,並常常去掉 = 補位。兩者都是編碼。Base64 編碼解碼 支援兩種字母表。
Base64能編碼圖片和檔案嗎?
能。結果是文字,不是更小的檔案。在 Base64 編碼解碼 中用檔案模式取得原始Base64或Data URL。檔案留在瀏覽器裡。