Bộ mã hóa và giải mã Base64: Chuyển đổi văn bản sang/từ Base64
Công cụ trực tuyến miễn phí để mã hóa văn bản thành Base64 hoặc giải mã các chuỗi Base64 trở lại văn bản. Hỗ trợ mã hóa Base64 tiêu chuẩn và an toàn với URL với chuyển đổi ngay lập tức.
Bộ mã hóa/giải mã Base64
Chuyển đổi văn bản sang và từ mã hóa Base64
Tài liệu
Bộ Mã Hóa và Giải Mã Base64
Giới thiệu
Base64 là một sơ đồ mã hóa nhị phân thành văn bản, đại diện cho dữ liệu nhị phân dưới dạng chuỗi ký tự ASCII. Nó được thiết kế để truyền tải dữ liệu được lưu trữ trong các định dạng nhị phân qua các kênh chỉ hỗ trợ nội dung văn bản một cách đáng tin cậy. Mã hóa Base64 chuyển đổi dữ liệu nhị phân thành một tập hợp 64 ký tự (do đó có tên gọi) có thể được truyền tải an toàn qua các giao thức dựa trên văn bản mà không bị hỏng dữ liệu.
Tập hợp ký tự Base64 bao gồm:
- Các chữ cái hoa A-Z (26 ký tự)
- Các chữ cái thường a-z (26 ký tự)
- Các chữ số 0-9 (10 ký tự)
- Hai ký tự bổ sung, thường là "+" và "/" (2 ký tự)
Công cụ này cho phép bạn dễ dàng mã hóa văn bản thành định dạng Base64 hoặc giải mã các chuỗi Base64 trở lại văn bản gốc của chúng. Nó đặc biệt hữu ích cho các nhà phát triển, chuyên gia CNTT và bất kỳ ai làm việc với dữ liệu cần được truyền tải an toàn qua các kênh dựa trên văn bản.
Cách Mã Hóa Base64 Hoạt Động
Quy trình mã hóa
Mã hóa Base64 hoạt động bằng cách chuyển đổi mỗi nhóm ba byte (24 bit) dữ liệu nhị phân thành bốn ký tự Base64. Quy trình theo các bước sau:
- Chuyển đổi văn bản đầu vào thành đại diện nhị phân của nó (sử dụng mã hóa ASCII hoặc UTF-8)
- Nhóm dữ liệu nhị phân thành các khối 24 bit (3 byte)
- Chia mỗi khối 24 bit thành bốn nhóm 6 bit
- Chuyển đổi mỗi nhóm 6 bit thành ký tự Base64 tương ứng
Khi chiều dài đầu vào không chia hết cho 3, sẽ có thêm ký tự "=" để duy trì tỷ lệ 4:3 giữa chiều dài đầu ra và đầu vào.
Biểu thức toán học
Đối với một chuỗi byte , các ký tự Base64 tương ứng được tính như sau:
Trong đó đại diện cho ký tự thứ trong bảng chữ cái Base64.
Quy trình giải mã
Giải mã Base64 đảo ngược quy trình mã hóa:
- Chuyển đổi mỗi ký tự Base64 thành giá trị 6 bit của nó
- Nối các giá trị 6 bit này lại với nhau
- Nhóm các bit thành các khối 8 bit (byte)
- Chuyển đổi mỗi byte thành ký tự tương ứng của nó
Đệm
Khi số byte cần mã hóa không chia hết cho 3, sẽ áp dụng đệm:
- Nếu còn một byte, nó sẽ được chuyển đổi thành hai ký tự Base64 theo sau là "=="
- Nếu còn hai byte, chúng sẽ được chuyển đổi thành ba ký tự Base64 theo sau là "="
Ví dụ
Hãy mã hóa văn bản "Hello" thành Base64:
- Đại diện ASCII của "Hello": 72 101 108 108 111
- Đại diện nhị phân: 01001000 01100101 01101100 01101100 01101111
- Nhóm thành các khối 6 bit: 010010 000110 010101 101100 011011 000110 1111
- Khối cuối cùng chỉ có 4 bit, vì vậy chúng ta thêm đệm bằng số 0: 010010 000110 010101 101100 011011 000110 111100
- Chuyển đổi sang thập phân: 18, 6, 21, 44, 27, 6, 60
- Tra cứu trong bảng chữ cái Base64: S, G, V, s, b, G, 8
- Kết quả là "SGVsbG8="
Lưu ý rằng có đệm "=" ở cuối vì chiều dài đầu vào (5 byte) không chia hết cho 3.
Công thức
Công thức tổng quát để tính chiều dài của chuỗi đã mã hóa Base64 là:
Trong đó đại diện cho hàm trần (làm tròn lên số nguyên gần nhất).
Các trường hợp sử dụng
Mã hóa Base64 được sử dụng rộng rãi trong nhiều ứng dụng:
-
Tệp đính kèm email: MIME (Mở rộng Thư điện tử Đa mục đích) sử dụng Base64 để mã hóa các tệp đính kèm nhị phân trong email.
-
URL dữ liệu: Nhúng hình ảnh nhỏ, phông chữ hoặc các tài nguyên khác trực tiếp trong HTML, CSS hoặc JavaScript bằng cách sử dụng định dạng URL
data:
. -
Giao tiếp API: Truyền tải an toàn dữ liệu nhị phân trong các payload JSON hoặc các định dạng API dựa trên văn bản khác.
-
Lưu trữ dữ liệu nhị phân trong các định dạng văn bản: Khi dữ liệu nhị phân cần được lưu trữ trong XML, JSON hoặc các định dạng dựa trên văn bản khác.
-
Hệ thống xác thực: Xác thực cơ bản trong HTTP sử dụng mã hóa Base64 (mặc dù không phải để bảo mật, chỉ để mã hóa).
-
Mật mã: Là một phần của các giao thức và hệ thống mật mã khác nhau, thường để mã hóa khóa hoặc chứng chỉ.
-
Giá trị cookie: Mã hóa các cấu trúc dữ liệu phức tạp để lưu trữ trong cookie.
Các lựa chọn thay thế
Mặc dù Base64 được sử dụng rộng rãi, có những lựa chọn thay thế có thể phù hợp hơn trong một số tình huống:
-
Base64 an toàn cho URL: Một biến thể sử dụng "-" và "_" thay cho "+" và "/" để tránh các vấn đề mã hóa URL. Hữu ích cho dữ liệu sẽ được bao gồm trong URL.
-
Base32: Sử dụng tập hợp 32 ký tự, dẫn đến đầu ra dài hơn nhưng có tính đọc hiểu tốt hơn và không phân biệt chữ hoa chữ thường.
-
Mã hóa Hex: Chuyển đổi đơn giản sang hệ thập lục phân, điều này ít hiệu quả hơn (gấp đôi kích thước) nhưng rất đơn giản và được hỗ trợ rộng rãi.
-
Truyền tải nhị phân: Đối với các tệp lớn hoặc khi hiệu suất là rất quan trọng, các giao thức truyền tải nhị phân trực tiếp như HTTP với các tiêu đề Content-Type phù hợp là lựa chọn tốt hơn.
-
Nén + Base64: Đối với dữ liệu văn bản lớn, nén trước khi mã hóa có thể giảm thiểu sự gia tăng kích thước.
-
Tuân thủ JSON/XML: Đối với dữ liệu có cấu trúc, việc sử dụng mã hóa JSON hoặc XML gốc có thể phù hợp hơn là mã hóa Base64.
Lịch sử
Mã hóa Base64 có nguồn gốc từ các hệ thống máy tính và viễn thông sớm, nơi dữ liệu nhị phân cần được truyền tải qua các kênh được thiết kế cho văn bản.
Đặc tả chính thức của Base64 lần đầu tiên được công bố vào năm 1987 như một phần của RFC 989, định nghĩa Thư điện tử Bảo mật (PEM). Điều này sau đó đã được cập nhật trong RFC 1421 (1993) và RFC 2045 (1996, như một phần của MIME).
Thuật ngữ "Base64" xuất phát từ thực tế rằng mã hóa sử dụng 64 ký tự ASCII khác nhau để đại diện cho dữ liệu nhị phân. Sự lựa chọn 64 ký tự này là có chủ ý, vì 64 là một số mũ của 2 (2^6), điều này làm cho việc chuyển đổi giữa nhị phân và Base64 trở nên hiệu quả.
Theo thời gian, một số biến thể của Base64 đã xuất hiện:
- Base64 tiêu chuẩn: Như được định nghĩa trong RFC 4648, sử dụng A-Z, a-z, 0-9, +, / và = cho việc đệm
- Base64 an toàn cho URL: Sử dụng - và _ thay cho + và / để tránh các vấn đề mã hóa URL
- Base64 an toàn cho tên tệp: Tương tự như Base64 an toàn cho URL, được thiết kế để sử dụng trong tên tệp
- Base64 sửa đổi cho IMAP: Sử dụng trong giao thức IMAP với một tập hợp các ký tự đặc biệt khác
Mặc dù đã hơn ba thập kỷ tuổi, Base64 vẫn là một công cụ cơ bản trong máy tính hiện đại, đặc biệt với sự gia tăng của các ứng dụng web và API dựa nhiều vào các định dạng dữ liệu dựa trên văn bản như JSON.
Ví dụ mã
Dưới đây là các ví dụ về mã hóa và giải mã Base64 trong các ngôn ngữ lập trình khác nhau:
1// Mã hóa/Giải mã Base64 trong JavaScript
2function encodeToBase64(text) {
3 return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7 try {
8 return atob(base64String);
9 } catch (e) {
10 throw new Error("Chuỗi Base64 không hợp lệ");
11 }
12}
13
14// Ví dụ sử dụng
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Mã hóa:", encoded); // SGVsbG8sIFdvcmxkIQ==
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("Giải mã:", decoded); // Hello, World!
22} catch (error) {
23 console.error(error.message);
24}
25
1# Mã hóa/Giải mã Base64 trong Python
2import base64
3
4def encode_to_base64(text):
5 # Chuyển đổi chuỗi thành byte và sau đó mã hóa
6 text_bytes = text.encode('utf-8')
7 base64_bytes = base64.b64encode(text_bytes)
8 return base64_bytes.decode('utf-8')
9
10def decode_from_base64(base64_string):
11 try:
12 # Chuyển đổi chuỗi base64 thành byte và sau đó giải mã
13 base64_bytes = base64_string.encode('utf-8')
14 text_bytes = base64.b64decode(base64_bytes)
15 return text_bytes.decode('utf-8')
16 except Exception as e:
17 raise ValueError(f"Chuỗi Base64 không hợp lệ: {e}")
18
19# Ví dụ sử dụng
20original_text = "Hello, World!"
21encoded = encode_to_base64(original_text)
22print(f"Mã hóa: {encoded}") # SGVsbG8sIFdvcmxkIQ==
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"Giải mã: {decoded}") # Hello, World!
27except ValueError as e:
28 print(e)
29
1// Mã hóa/Giải mã Base64 trong Java
2import java.util.Base64;
3import java.nio.charset.StandardCharsets;
4
5public class Base64Example {
6 public static String encodeToBase64(String text) {
7 byte[] textBytes = text.getBytes(StandardCharsets.UTF_8);
8 byte[] encodedBytes = Base64.getEncoder().encode(textBytes);
9 return new String(encodedBytes, StandardCharsets.UTF_8);
10 }
11
12 public static String decodeFromBase64(String base64String) {
13 try {
14 byte[] base64Bytes = base64String.getBytes(StandardCharsets.UTF_8);
15 byte[] decodedBytes = Base64.getDecoder().decode(base64Bytes);
16 return new String(decodedBytes, StandardCharsets.UTF_8);
17 } catch (IllegalArgumentException e) {
18 throw new IllegalArgumentException("Chuỗi Base64 không hợp lệ: " + e.getMessage());
19 }
20 }
21
22 public static void main(String[] args) {
23 String originalText = "Hello, World!";
24 String encoded = encodeToBase64(originalText);
25 System.out.println("Mã hóa: " + encoded); // SGVsbG8sIFdvcmxkIQ==
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("Giải mã: " + decoded); // Hello, World!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// Mã hóa/Giải mã Base64 trong PHP
3function encodeToBase64($text) {
4 return base64_encode($text);
5}
6
7function decodeFromBase64($base64String) {
8 $decoded = base64_decode($base64String, true);
9 if ($decoded === false) {
10 throw new Exception("Chuỗi Base64 không hợp lệ");
11 }
12 return $decoded;
13}
14
15// Ví dụ sử dụng
16$originalText = "Hello, World!";
17$encoded = encodeToBase64($originalText);
18echo "Mã hóa: " . $encoded . "\n"; // SGVsbG8sIFdvcmxkIQ==
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "Giải mã: " . $decoded . "\n"; // Hello, World!
23} catch (Exception $e) {
24 echo "Lỗi: " . $e->getMessage() . "\n";
25}
26?>
27
1// Mã hóa/Giải mã Base64 trong C#
2using System;
3using System.Text;
4
5class Base64Example
6{
7 public static string EncodeToBase64(string text)
8 {
9 byte[] textBytes = Encoding.UTF8.GetBytes(text);
10 return Convert.ToBase64String(textBytes);
11 }
12
13 public static string DecodeFromBase64(string base64String)
14 {
15 try
16 {
17 byte[] base64Bytes = Convert.FromBase64String(base64String);
18 return Encoding.UTF8.GetString(base64Bytes);
19 }
20 catch (FormatException)
21 {
22 throw new FormatException("Chuỗi Base64 không hợp lệ");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Hello, World!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"Mã hóa: {encoded}"); // SGVsbG8sIFdvcmxkIQ==
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"Giải mã: {decoded}"); // Hello, World!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"Lỗi: {e.Message}");
40 }
41 }
42}
43
1# Mã hóa/Giải mã Base64 trong Ruby
2require 'base64'
3
4def encode_to_base64(text)
5 Base64.strict_encode64(text)
6end
7
8def decode_from_base64(base64_string)
9 begin
10 Base64.strict_decode64(base64_string)
11 rescue ArgumentError => e
12 raise "Chuỗi Base64 không hợp lệ: #{e.message}"
13 end
14end
15
16# Ví dụ sử dụng
17original_text = "Hello, World!"
18encoded = encode_to_base64(original_text)
19puts "Mã hóa: #{encoded}" # SGVsbG8sIFdvcmxkIQ==
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "Giải mã: #{decoded}" # Hello, World!
24rescue StandardError => e
25 puts "Lỗi: #{e.message}"
26end
27
1// Mã hóa/Giải mã Base64 trong Go
2package main
3
4import (
5 "encoding/base64"
6 "fmt"
7)
8
9func encodeToBase64(text string) string {
10 return base64.StdEncoding.EncodeToString([]byte(text))
11}
12
13func decodeFromBase64(base64String string) (string, error) {
14 bytes, err := base64.StdEncoding.DecodeString(base64String)
15 if err != nil {
16 return "", fmt.Errorf("chuỗi Base64 không hợp lệ: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Hello, World!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("Mã hóa:", encoded) // SGVsbG8sIFdvcmxkIQ==
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("Lỗi:", err)
29 } else {
30 fmt.Println("Giải mã:", decoded) // Hello, World!
31 }
32}
33
1// Mã hóa/Giải mã Base64 trong Swift
2import Foundation
3
4func encodeToBase64(_ text: String) -> String? {
5 if let data = text.data(using: .utf8) {
6 return data.base64EncodedString()
7 }
8 return nil
9}
10
11func decodeFromBase64(_ base64String: String) -> String? {
12 if let data = Data(base64Encoded: base64String) {
13 return String(data: data, encoding: .utf8)
14 }
15 return nil
16}
17
18// Ví dụ sử dụng
19let originalText = "Hello, World!"
20if let encoded = encodeToBase64(originalText) {
21 print("Mã hóa: \(encoded)") // SGVsbG8sIFdvcmxkIQ==
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("Giải mã: \(decoded)") // Hello, World!
25 } else {
26 print("Lỗi: Không thể giải mã chuỗi Base64")
27 }
28} else {
29 print("Lỗi: Không thể mã hóa văn bản")
30}
31
1' Mã hóa/Giải mã Base64 trong Excel VBA
2' Lưu ý: Điều này yêu cầu tham chiếu đến Microsoft XML, v6.0
3Function EncodeToBase64(text As String) As String
4 Dim xmlObj As Object
5 Set xmlObj = CreateObject("MSXML2.DOMDocument")
6
7 Dim xmlNode As Object
8 Set xmlNode = xmlObj.createElement("b64")
9
10 xmlNode.DataType = "bin.base64"
11 xmlNode.nodeTypedValue = StrConv(text, vbFromUnicode)
12
13 EncodeToBase64 = xmlNode.text
14
15 Set xmlNode = Nothing
16 Set xmlObj = Nothing
17End Function
18
19Function DecodeFromBase64(base64String As String) As String
20 On Error GoTo ErrorHandler
21
22 Dim xmlObj As Object
23 Set xmlObj = CreateObject("MSXML2.DOMDocument")
24
25 Dim xmlNode As Object
26 Set xmlNode = xmlObj.createElement("b64")
27
28 xmlNode.DataType = "bin.base64"
29 xmlNode.text = base64String
30
31 DecodeFromBase64 = StrConv(xmlNode.nodeTypedValue, vbUnicode)
32
33 Set xmlNode = Nothing
34 Set xmlObj = Nothing
35 Exit Function
36
37ErrorHandler:
38 DecodeFromBase64 = "Lỗi: Chuỗi Base64 không hợp lệ"
39End Function
40
41' Sử dụng trong một trang tính:
42' =EncodeToBase64("Hello, World!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# Mã hóa/Giải mã Base64 trong R
2# Yêu cầu gói 'base64enc'
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # Chuyển đổi văn bản thành byte thô, sau đó mã hóa
8 text_raw <- charToRaw(text)
9 base64_encoded <- base64encode(text_raw)
10 return(rawToChar(base64_encoded))
11}
12
13decode_from_base64 <- function(base64_string) {
14 tryCatch({
15 # Chuyển đổi chuỗi base64 thành byte thô, sau đó giải mã
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("Chuỗi Base64 không hợp lệ:", e$message))
21 })
22}
23
24# Ví dụ sử dụng
25original_text <- "Hello, World!"
26encoded <- encode_to_base64(original_text)
27cat("Mã hóa:", encoded, "\n") # SGVsbG8sIFdvcmxkIQ==
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("Giải mã:", decoded, "\n") # Hello, World!
32}, error = function(e) {
33 cat("Lỗi:", e$message, "\n")
34})
35
1% Mã hóa/Giải mã Base64 trong MATLAB
2function demo_base64()
3 originalText = 'Hello, World!';
4
5 % Mã hóa
6 encoded = encode_to_base64(originalText);
7 fprintf('Mã hóa: %s\n', encoded); % SGVsbG8sIFdvcmxkIQ==
8
9 % Giải mã
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('Giải mã: %s\n', decoded); % Hello, World!
13 catch e
14 fprintf('Lỗi: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % Chuyển đổi văn bản thành mảng uint8 và mã hóa
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % Giải mã chuỗi base64 thành mảng uint8
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('Chuỗi Base64 không hợp lệ');
31 end
32end
33
1// Mã hóa/Giải mã Base64 trong C sử dụng OpenSSL
2#include <stdio.h>
3#include <string.h>
4#include <openssl/bio.h>
5#include <openssl/evp.h>
6#include <openssl/buffer.h>
7#include <stdint.h>
8
9char* encode_to_base64(const char* input) {
10 BIO *bio, *b64;
11 BUF_MEM *bufferPtr;
12
13 b64 = BIO_new(BIO_f_base64());
14 bio = BIO_new(BIO_s_mem());
15 bio = BIO_push(b64, bio);
16
17 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
18 BIO_write(bio, input, strlen(input));
19 BIO_flush(bio);
20 BIO_get_mem_ptr(bio, &bufferPtr);
21
22 char* result = (char*)malloc(bufferPtr->length + 1);
23 memcpy(result, bufferPtr->data, bufferPtr->length);
24 result[bufferPtr->length] = '\0';
25
26 BIO_free_all(bio);
27
28 return result;
29}
30
31char* decode_from_base64(const char* input) {
32 BIO *bio, *b64;
33 size_t length = strlen(input);
34 char* buffer = (char*)malloc(length);
35
36 b64 = BIO_new(BIO_f_base64());
37 bio = BIO_new_mem_buf(input, -1);
38 bio = BIO_push(b64, bio);
39
40 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
41 int decoded_length = BIO_read(bio, buffer, length);
42
43 if (decoded_length <= 0) {
44 free(buffer);
45 BIO_free_all(bio);
46 return NULL; // Đầu vào Base64 không hợp lệ
47 }
48
49 buffer[decoded_length] = '\0';
50
51 BIO_free_all(bio);
52
53 return buffer;
54}
55
56int main() {
57 const char* original_text = "Hello, World!";
58
59 char* encoded = encode_to_base64(original_text);
60 printf("Mã hóa: %s\n", encoded); // SGVsbG8sIFdvcmxkIQ==
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("Giải mã: %s\n", decoded); // Hello, World!
65 free(decoded);
66 } else {
67 printf("Lỗi: Chuỗi Base64 không hợp lệ\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// Mã hóa/Giải mã Base64 trong Rust
2use base64::{encode, decode};
3use std::str;
4
5fn encode_to_base64(text: &str) -> String {
6 encode(text)
7}
8
9fn decode_from_base64(base64_string: &str) -> Result<String, String> {
10 match decode(base64_string) {
11 Ok(bytes) => {
12 match str::from_utf8(&bytes) {
13 Ok(text) => Ok(text.to_string()),
14 Err(e) => Err(format!("Chuỗi UTF-8 không hợp lệ: {}", e))
15 }
16 },
17 Err(e) => Err(format!("Chuỗi Base64 không hợp lệ: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Hello, World!";
23 let encoded = encode_to_base64(original_text);
24 println!("Mã hóa: {}", encoded); // SGVsbG8sIFdvcmxkIQ==
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("Giải mã: {}", decoded), // Hello, World!
28 Err(e) => println!("Lỗi: {}", e)
29 }
30}
31
Các trường hợp biên và xem xét
Khi làm việc với mã hóa và giải mã Base64, hãy lưu ý những điều quan trọng này:
-
Ký tự Unicode và không phải ASCII: Khi mã hóa văn bản có ký tự không phải ASCII, hãy đảm bảo mã hóa ký tự thích hợp (thường là UTF-8) trước khi mã hóa Base64.
-
Đệm: Base64 tiêu chuẩn sử dụng đệm bằng các ký tự "=" để đảm bảo chiều dài đầu ra là bội số của 4. Một số triển khai cho phép bỏ qua đệm, điều này có thể gây ra vấn đề tương thích.
-
Ngắt dòng: Các triển khai Base64 truyền thống chèn ngắt dòng (thường là mỗi 76 ký tự) để dễ đọc, nhưng các ứng dụng hiện đại thường bỏ qua điều này.
-
Base64 an toàn cho URL: Base64 tiêu chuẩn sử dụng các ký tự "+" và "/" có ý nghĩa đặc biệt trong URL. Đối với các ngữ cảnh URL, hãy sử dụng Base64 an toàn cho URL, thay thế các ký tự này bằng "-" và "_".
-
Khoảng trắng: Khi giải mã, một số triển khai có thể khoan dung và bỏ qua khoảng trắng, trong khi những cái khác yêu cầu đầu vào chính xác.
-
Tăng kích thước: Mã hóa Base64 làm tăng kích thước dữ liệu khoảng 33% (4 byte đầu ra cho mỗi 3 byte đầu vào).
-
Hiệu suất: Mã hóa/giải mã Base64 có thể tốn nhiều tài nguyên tính toán cho dữ liệu rất lớn. Hãy xem xét các phương pháp truyền tải cho các tệp lớn.
Tài liệu tham khảo
Phản hồi
Nhấp vào thông báo phản hồi để bắt đầu gửi phản hồi về công cụ này
Công cụ liên quan
Khám phá thêm các công cụ có thể hữu ích cho quy trình làm việc của bạn