# VII. Base64 Encoding/Decoding

## 1. What are Base32 and Base64?

"Base32" và "Base64" là phương pháp biểu diễn dữ liệu nhị phân bằng bộ ký tự cụ thể dựa trên "ASCII". Nói cách khác, nó là một phương pháp biểu diễn dữ liệu.

ASCII (Mã tiêu chuẩn Mỹ để trao đổi thông tin): ASCII format là một bảng xuất hiện dưới tên của các hệ thống kỹ thuật số có giá trị số chung giữa các ký tự. Theo cách này, giá trị nhị phân tương đương của một ký tự là giống nhau trong tất cả các hệ thống điện tử.&#x20;

<figure><img src="/files/ZgSgD9MfcGjdv0yM9gTI" alt=""><figcaption></figcaption></figure>

Những kẻ tấn công sử dụng phương pháp mã hóa "Base32" để lọc dữ liệu bằng giao thức DNS.&#x20;

Nó thường chỉ ra tình huống bất thường khi các nhà phân tích SOC thấy dữ liệu được truyền ở định dạng "Base32", đặc biệt là trong các truy vấn liên quan đến DNS requests.

Example Base64 Encoded Data: YmFzZTY0X2VuY29kaW5n

Example Base32 Encoded Data: MJQXGZJTGJPWK3TDN5SGS3TH

Lưu ý: Phương pháp mã hóa Base32 và base64 có cùng logic. Các ví dụ hiển thị trong chủ đề này được hiển thị thông qua mã hóa "base64".

## 2. Intended Uses and Features

"Base32" và "Base64" là phương thức mã hóa cho phép gửi dữ liệu dạng văn bản đến các hệ thống xử lý kiểu dữ liệu nhị phân.&#x20;

Trong phương pháp mã hóa này, tất cả dữ liệu có thể được lưu giữ mà không bị mất dữ liệu.&#x20;

Đó là một phương pháp hiệu quả để tránh một số ký tự có thể gây ra sự cố trong hệ thống đích.&#x20;

Ví dụ: nó cung cấp khả năng truyền dữ liệu ở định dạng âm thanh hoặc video đến hệ thống đích dưới dạng văn bản.&#x20;

Nó làm giảm các lỗi có thể gặp phải trong quá trình truyền hoặc trong quá trình xử lý dữ liệu trong hệ thống đích.&#x20;

Số 32 và 64 ở cuối tên cho biết tổng số ký tự trong bộ ký tự.&#x20;

Ví dụ: bộ ký tự trong phương pháp mã hóa base64 bao gồm cả chữ thường và chữ hoa và số.&#x20;

Bộ ký tự của phương pháp mã hóa Base32 không bao gồm chữ thường và một số số.

**Bộ ký tự Base64: 26 chữ thường + 26 chữ hoa + 10 chữ số + dấu “/” + dấu “+” = 64 ký tự**

**Bộ ký tự Base32: 26 chữ hoa + 6 chữ số = 32 ký tự**

Mã hóa Base64 và Base32 không bao giờ là thuật toán encryption hoặc decryption. Nó cũng không được khuyến khích sử dụng cho mục đích bảo mật.

<figure><img src="/files/CLWUv3yjjmwhbpEyeYQA" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/4IzeNvcfbsMPWIGQVjqo" alt=""><figcaption></figcaption></figure>

Mỗi ký tự trong dữ liệu được mã hóa theo phương pháp mã hóa Base64 được biểu thị dưới dạng "6 bit" (2^6=64). Trong phương pháp mã hóa Base32, nó được biểu thị bằng "5 bit" (2^5=32). Điều này có nghĩa là dữ liệu có cùng độ dài sẽ cho kết quả đầu ra dài hơn với mã hóa base32.

## 3. Base64 Encoding Logic

Dưới đây là mã hóa base64 từng bước, được giải thích chi tiết bằng ví dụ:

### Step 1

Đầu tiên, dữ liệu được cung cấp cho thuật toán mã hóa base64 được chọn. Một văn bản đã được chọn cho rõ ràng: "base64"

### Step 2

Vì các hoạt động dựa trên bit sẽ được thực hiện nên văn bản "base64" được chuyển đổi thành nhị phân:

Nhị phân: 01100010 01100001 01110011 01100101 00110110 00110100&#x20;

Online converter: <https://www.asciitohex.com/> (ascii to binary, hexadecimal, base64, ROT13, URL, HTML)

### Step 3

Dữ liệu được chuyển đổi sang định dạng nhị phân được chia thành 6 bit tương ứng:

<figure><img src="/files/OwsONvqY8EqAQytSy3J2" alt=""><figcaption></figcaption></figure>

### Step 4

Mỗi chuỗi bit được phân tách thành 6 bit được tìm thấy trong bảng mã hóa base64 và các ký tự được sắp xếp liên tiếp:

<figure><img src="/files/xz8yR94eoJYaQHvazEMr" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/SATRgjOXFsSObRv5gigU" alt=""><figcaption></figcaption></figure>

Encoded Data = YMFzZTY0

Kết quả của các hoạt động tuần tự trên là dữ liệu được mã hóa đã được tạo thành công. Dữ liệu được giải mã, tức là đạt đến giá trị "base64", trong đó các thao tác được thực hiện được áp dụng hoàn toàn ngược lại.

Lưu ý: Trong phương pháp mã hóa Base64, ký tự "đệm" là dấu "=". Nếu độ dài của đầu vào đi vào quy trình mã hóa base64 không phải là "3 byte và bội số của nó", thì (các) dấu "=" sẽ được thêm vào đầu ra dưới dạng byte đệm.&#x20;

Ví dụ: hãy mã hóa văn bản "base" with an online base64 encoder <https://www.base64encode.org/>

<figure><img src="/files/MqgAbRS2gItQaouQdBiC" alt=""><figcaption></figcaption></figure>

Vì mỗi ký tự là 1 byte nên chúng tôi đã cung cấp 4 byte làm đầu vào. Hai dấu "=" được thêm vào cuối đầu ra để hoàn thành nó thành 6 byte.

## 4. Base64 Encode/Decode Operations on Linux Command Line

Dòng lệnh Linux có thể được sử dụng để encode/decode text/data with base64. Một công cụ có tên "**base64**" được sử dụng cho việc này. Ví dụ: hãy mã hóa văn bản "base":

<figure><img src="/files/7QKcUpMJm2SGvkoZ9oKN" alt=""><figcaption></figcaption></figure>

Như được thấy trong hình trên, văn bản "base" đã được mã hóa thành công bằng lệnh "**echo**" và "**base64**". Để giải mã bằng Base64, nên sử dụng tham số "**-d**"(decode). Ví dụ: hãy chuyển đổi dữ liệu được mã hóa ở trên về trạng thái ban đầu:

<figure><img src="/files/XNf8ELFxi7Tcssjgfigq" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://viettaliii.gitbook.io/home/self-learning/introduction-to-cryptology/vii.-base64-encoding-decoding.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
