Base64 sang Hex

Chuyển đổi giữa Base64 và hệ thập lục phân

Base64

Hex

Chạy cục bộ · An toàn để dán thông tin bí mật
Kết quả sẽ hiện ở đây…
Base64 → Hex

Chuyển đổi Base64 sang Hex là gì?

Chuyển đổi Base64 sang hex biến đổi dữ liệu giữa hai sơ đồ mã hóa nhị phân sang văn bản phổ biến. Base64 biểu diễn dữ liệu nhị phân bằng 64 ký tự ASCII (A-Z, a-z, 0-9, +, /), mã hóa mỗi 3 byte thành 4 ký tự. Hệ thập lục phân biểu diễn mỗi byte bằng đúng hai ký tự từ bảng chữ cái 16 ký hiệu (0-9, a-f). Chuyển đổi giữa các định dạng này là quy trình hai bước: giải mã chuỗi Base64 thành các byte thô, rồi mã hóa lại các byte đó theo định dạng đích.

Ký hiệu thập lục phân là cách biểu diễn chuẩn cho dữ liệu nhị phân trong lập trình cấp thấp, mật mã học và các giao thức mạng. Mỗi ký tự hex ánh xạ trực tiếp tới một nibble 4 bit, giúp dễ dàng đọc từng giá trị byte. Ví dụ, hàm băm SHA-256 hầu như luôn được hiển thị dưới dạng chuỗi hex 64 ký tự. Ngược lại, Base64 được tối ưu cho tính gọn nhẹ — cùng hàm băm đó chỉ cần 44 ký tự trong Base64 — và là mã hóa chuẩn cho tệp đính kèm email (MIME), data URI và payload API.

Cả hai mã hóa đều được định nghĩa trong RFC 4648. Việc chuyển đổi giữa chúng là không mất dữ liệu: không có dữ liệu nào được thêm vào hay xóa đi, chỉ có cách biểu diễn văn bản thay đổi. Điều này làm cho việc chuyển đổi Base64 sang hex trở thành thao tác thường gặp khi gỡ lỗi các payload được mã hóa, kiểm tra dấu vân tay chứng chỉ, hoặc xác minh đầu ra hàm băm trên các hệ thống sử dụng định dạng hiển thị khác nhau.

Tại sao dùng công cụ chuyển đổi Base64 sang Hex này?

Công cụ này chuyển đổi giữa Base64 và hệ thập lục phân trực tiếp trong trình duyệt của bạn. Không có dữ liệu nào rời khỏi máy của bạn, và quá trình chuyển đổi diễn ra theo thời gian thực khi bạn nhập.

Chuyển đổi tức thì
Dán Base64 hoặc hex và xem kết quả ngay lập tức — không cần gửi yêu cầu đến máy chủ. Chế độ hai chiều cho phép bạn đổi hướng chuyển đổi chỉ với một cú nhấp.
🔒
Xử lý ưu tiên quyền riêng tư
Toàn bộ quá trình chuyển đổi chạy cục bộ trong trình duyệt của bạn bằng JavaScript. Khóa mật mã, hàm băm và token của bạn không bao giờ được truyền qua mạng.
Chế độ hai chiều
Chuyển đổi giữa Base64 sang hex và hex sang Base64 chỉ với một nút. Công cụ tự động phát hiện và xử lý cả biến thể Base64 chuẩn lẫn URL-safe.
📋
Kết quả sạch, sẵn sàng để dán
Kết quả là hex chữ thường không có dấu phân cách hay tiền tố — định dạng mà hầu hết các API, CLI và ngôn ngữ lập trình yêu cầu. Sao chép chỉ với một cú nhấp.

Trường hợp sử dụng Base64 sang Hex

Lập trình viên Frontend
Chuyển đổi phản hồi API được mã hóa Base64 sang hex khi gỡ lỗi giao thức nhị phân, khung WebSocket, hoặc nội dung ArrayBuffer trong bảng điều khiển DevTools của trình duyệt.
Kỹ sư Backend
Chuyển đổi tóm tắt hàm băm Base64 từ chữ ký JWT hoặc phản hồi HMAC sang hex để so sánh với các giá trị được lưu trữ trong OpenSSL hoặc cơ sở dữ liệu sử dụng định dạng hex.
DevOps / SRE
Xác minh dấu vân tay chứng chỉ TLS bằng cách chuyển đổi khóa công khai Base64 từ tệp PEM sang định dạng hex được hiển thị bởi trình duyệt và các công cụ giám sát.
Chuyên viên Bảo mật
Kiểm tra khóa mã hóa và vector khởi tạo (IV) đến dưới dạng Base64 trong lưu lượng API — chuyển sang hex để phân tích cấp byte trong Wireshark hoặc CyberChef.
Kỹ sư Dữ liệu
Chuyển đổi cột nhị phân được mã hóa Base64 từ cơ sở dữ liệu (PostgreSQL bytea, MongoDB BinData) sang hex để so sánh, ghi nhật ký hoặc tập lệnh di chuyển.
Sinh viên / Người học
Hiểu mối quan hệ giữa Base64 và hệ thập lục phân bằng cách xem cách các byte giống nhau được biểu diễn theo từng định dạng, củng cố kiến thức cơ bản về mã hóa.

So sánh mã hóa Base64 và Hệ thập lục phân

Base64 và hệ thập lục phân đều chuyển đổi dữ liệu nhị phân thành văn bản có thể in được, nhưng chúng có sự đánh đổi khác nhau giữa tính gọn nhẹ và khả năng đọc. Bảng dưới đây tóm tắt các điểm khác biệt chính.

Thuộc tínhBase64Hexadecimal
Bảng chữ cáiA-Z a-z 0-9 + / =0-9 a-f
Bit trên mỗi ký tự64
Mức tăng kích thước~33% lớn hơn dữ liệu thô100% lớn hơn dữ liệu thô
Khả năng đọcGọn nhưng khó đọcMỗi byte hiển thị dưới dạng 2 ký tự
Sử dụng chínhEmail, data URI, APIHàm băm mật mã, địa chỉ MAC, màu sắc
Đặc tảRFC 4648IEEE 754, RFC 4648 sec 8

Ví dụ chuyển đổi

Bảng dưới đây cho thấy các chuỗi byte giống nhau trong biểu diễn Base64 và thập lục phân. Lưu ý rằng kết quả hex luôn bằng đúng hai lần số byte, trong khi độ dài Base64 bằng ceil(byteCount / 3) * 4.

Đầu vào (văn bản / byte)Base64Hex
HelloSGVsbG8=48656c6c6f
ABQUI=4142
0xFFMHhGRg==30784646
AAE=0001
key=vala2V5PXZhbA==6b65793d76616c
Þ­¾ï (bytes)3q2+7w==deadbeef

Cách chuyển đổi hoạt động

Chuyển đổi Base64 sang hệ thập lục phân là quy trình hai giai đoạn. Đầu tiên, chuỗi Base64 được giải mã thành các byte thô bằng cách ánh xạ từng ký tự sang giá trị 6 bit của nó, nối các bit lại, rồi chia thành các byte 8 bit (loại bỏ phần đệm). Bước này đảo ngược quá trình mã hóa được định nghĩa trong RFC 4648 Section 4.

Tiếp theo, mỗi byte được chuyển đổi sang biểu diễn thập lục phân hai chữ số. Giá trị byte 0-255 ánh xạ tới 00-ff. Một byte như 0x4F (thập phân 79) trở thành hai ký tự '4' và 'f'. Chuỗi hex hoàn chỉnh chỉ đơn giản là sự ghép nối của tất cả các cặp hai ký tự. Chiều ngược lại (hex sang Base64) áp dụng các bước này theo thứ tự ngược lại: phân tích các cặp hex thành byte, rồi mã hóa Base64 kết quả.

Nhị phân 4 bitChữ số hex
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010a
1011b
1100c
1101d
1110e
1111f

Ví dụ mã nguồn

Các đoạn mã có thể chạy được này minh họa cách chuyển đổi giữa Base64 và hex trong JavaScript, Python, Go và dòng lệnh. Mỗi ví dụ bao gồm cả hai hướng chuyển đổi.

JavaScript (browser / Node.js)
// Base64 to Hex
function base64ToHex(b64) {
  const raw = atob(b64)
  return Array.from(raw, c =>
    c.charCodeAt(0).toString(16).padStart(2, '0')
  ).join('')
}
base64ToHex('SGVsbG8=') // → "48656c6c6f"

// Hex to Base64
function hexToBase64(hex) {
  const bytes = hex.match(/.{1,2}/g).map(b => parseInt(b, 16))
  return btoa(String.fromCharCode(...bytes))
}
hexToBase64('48656c6c6f') // → "SGVsbG8="

// Node.js Buffer shorthand
Buffer.from('SGVsbG8=', 'base64').toString('hex')   // → "48656c6c6f"
Buffer.from('48656c6c6f', 'hex').toString('base64')  // → "SGVsbG8="
Python
import base64, binascii

# Base64 to Hex
b64_str = 'SGVsbG8='
raw_bytes = base64.b64decode(b64_str)
hex_str = raw_bytes.hex()            # → '48656c6c6f'
# or: binascii.hexlify(raw_bytes).decode()

# Hex to Base64
hex_str = '48656c6c6f'
raw_bytes = bytes.fromhex(hex_str)
b64_str = base64.b64encode(raw_bytes).decode()  # → 'SGVsbG8='

# One-liner for quick conversion
base64.b64encode(bytes.fromhex('deadbeef')).decode()  # → '3q2+7w=='
Go
package main

import (
    "encoding/base64"
    "encoding/hex"
    "fmt"
)

func main() {
    // Base64 to Hex
    raw, _ := base64.StdEncoding.DecodeString("SGVsbG8=")
    hexStr := hex.EncodeToString(raw)
    fmt.Println(hexStr) // → "48656c6c6f"

    // Hex to Base64
    raw2, _ := hex.DecodeString("48656c6c6f")
    b64Str := base64.StdEncoding.EncodeToString(raw2)
    fmt.Println(b64Str) // → "SGVsbG8="
}
CLI (bash)
# Base64 to Hex (using base64 + xxd)
echo -n 'SGVsbG8=' | base64 -d | xxd -p
# → 48656c6c6f

# Hex to Base64
echo -n '48656c6c6f' | xxd -r -p | base64
# → SGVsbG8=

# OpenSSL alternative
echo -n 'SGVsbG8=' | openssl base64 -d | xxd -p
# → 48656c6c6f

Câu hỏi thường gặp

Sự khác biệt giữa Base64 và hệ thập lục phân là gì?
Base64 sử dụng 64 ký tự và mã hóa 6 bit trên mỗi ký tự, dẫn đến mức tăng kích thước khoảng 33% so với byte thô. Hệ thập lục phân sử dụng 16 ký tự và mã hóa 4 bit trên mỗi ký tự, dẫn đến mức tăng 100% — gấp đôi kích thước ban đầu. Base64 gọn hơn; hex dễ đọc hơn vì mỗi byte ánh xạ sang đúng hai ký tự.
Chuyển đổi Base64 sang hex có mất dữ liệu không?
Không. Cả Base64 và hex đều là các mã hóa xác định, có thể đảo ngược của cùng một byte gốc. Chuyển đổi giữa chúng không thay đổi, nén hay mã hóa dữ liệu. Chuỗi byte thô giống hệt nhau trước và sau khi chuyển đổi — chỉ có cách biểu diễn văn bản thay đổi.
Tại sao kết quả hex dài hơn đầu vào Base64?
Hex luôn tạo ra 2 ký tự trên mỗi byte, trong khi Base64 tạo ra khoảng 1,33 ký tự trên mỗi byte. Một giá trị 20 byte là 28 ký tự Base64 nhưng 40 ký tự hex. Đây là sự đánh đổi vốn có: hex lớn hơn nhưng ranh giới mỗi byte hiển thị ngay lập tức.
Tôi có thể chuyển đổi Base64url (Base64 URL-safe) sang hex không?
Có. Base64url thay thế + bằng - và / bằng _ và bỏ qua phần đệm. Công cụ này tự động chuẩn hóa đầu vào Base64url trước khi chuyển đổi. Trong mã, thay thế - bằng + và _ bằng / rồi thêm phần đệm trước khi giải mã: các byte kết quả giống hệt Base64 chuẩn.
Làm thế nào để chuyển đổi hàm băm SHA-256 từ Base64 sang hex?
Dán hàm băm Base64 vào công cụ này để nhận chuỗi hex 64 ký tự. Trong mã: giải mã chuỗi Base64 thành byte (32 byte cho SHA-256), rồi mã hóa hex các byte đó. Ví dụ, trong Python: bytes.fromhex là chiều ngược lại — base64.b64decode(b64_hash).hex() cho bạn biểu diễn hex.
Điều gì xảy ra nếu đầu vào Base64 chứa khoảng trắng hoặc ký tự xuống dòng?
Hầu hết các bộ giải mã Base64, bao gồm công cụ này, loại bỏ khoảng trắng trước khi giải mã. Chứng chỉ được mã hóa PEM và nội dung được mã hóa MIME thường ngắt Base64 ở 64 hoặc 76 ký tự trên mỗi dòng. Các ký tự xuống dòng không phải là một phần của dữ liệu được mã hóa và được bỏ qua an toàn trong quá trình chuyển đổi.
Khi nào nên dùng hex thay vì Base64?
Dùng hex khi bạn cần khả năng đọc cấp byte — kiểm tra đầu ra mật mã, gỡ lỗi giao thức nhị phân hoặc chỉ định giá trị màu (#ff5733). Dùng Base64 khi tính gọn nhẹ quan trọng — nhúng dữ liệu trong JSON, truyền qua email (MIME) hoặc xây dựng data URI. Để lưu trữ và truyền dữ liệu, Base64 tiết kiệm khoảng 33% dung lượng so với hex.