Tiếng Việt
Cách mã hóa và giải mã Base64
Công cụ mã hóa và giải mã Base64 này chạy hai chiều cùng lúc. Gõ văn bản thường ở bên trái và Base64 hiện ra bên phải; dán Base64 vào bên phải và văn bản đã giải mã hiện ở bên trái. Hello thành SGVsbG8=, và dán SGVsbG8= sẽ cho lại Hello.
Hai khung này cũng xử lý bốn định dạng khác: nhị phân, hex, mã hóa URL và thực thể HTML. Khi bạn dán gì đó vào bên phải, công cụ xem xét và tự chuyển sang định dạng phù hợp, nên một chuỗi toàn 0 và 1 được đọc là nhị phân mà bạn không phải chọn gì. Nếu bạn lỡ dán chuỗi đã mã hóa vào khung văn bản thường, công cụ sẽ gợi ý giải mã thay vào đó.
Base64 thực sự làm gì
Base64 biến bất kỳ chuỗi byte nào thành 64 ký tự an toàn (A–Z, a–z, 0–9, + và /), để dữ liệu nhị phân đi qua được các hệ thống làm cho văn bản: email, JSON, thuộc tính HTML, biến môi trường. Nó lấy 3 byte (24 bit), chia thành bốn phần 6 bit và viết một ký tự cho mỗi phần.
Khi dữ liệu không phải bội số của 3 byte, dấu = được thêm vào cuối: Ma là TWE= và M là TQ==. Base64 không phải mã hóa bảo mật. Ai cũng giải mã được trong một giây, nên đừng coi mật khẩu dạng Base64 là đã được giấu.
Chuẩn hay an toàn cho URL?
Ký tự + và / làm hỏng URL và tên file, nên biến thể an toàn cho URL dùng - và _ thay thế và thường bỏ phần đệm. Hai byte FB FF là +/8= trong Base64 chuẩn và -_8 ở dạng an toàn cho URL. Token JWT và nhiều khóa API dùng dạng an toàn cho URL. Khi giải mã bạn không cần chọn: cả hai bảng ký tự đều được chấp nhận, có hoặc không có đệm, còn dấu cách và xuống dòng sẽ bị bỏ qua.
Tick Ngắt dòng sau mỗi 76 ký tự khi cần kết quả kiểu MIME cho nội dung email hoặc chứng chỉ PEM.
Các ký tự thường gặp trong mọi định dạng
Mọi thứ ở đây được chuyển đổi qua UTF-8, bảng mã mà gần như mọi trang web và API đều dùng. Vì vậy é chiếm hai byte và một emoji chiếm bốn byte. Những công cụ bỏ qua bước này sẽ làm hỏng chữ có dấu, và đó là lời phàn nàn phổ biến nhất về các trang giải mã Base64 trực tuyến, nhất là với tiếng Việt.
| Ký tự | Base64 | Nhị phân | Hex | URL |
|---|---|---|---|---|
| A | QQ== | 01000001 | 41 | A |
| a | YQ== | 01100001 | 61 | a |
| dấu cách | IA== | 00100000 | 20 | %20 |
| & | Jg== | 00100110 | 26 | %26 |
| é | w6k= | 11000011 10101001 | C3 A9 | %C3%A9 |
| € | 4oKs | 11100010 10000010 10101100 | E2 82 AC | %E2%82%AC |
Chuyển văn bản sang nhị phân và ngược lại
Chọn Nhị phân và mỗi byte của văn bản được viết thành 8 bit. Hi thành 01001000 01101001. Tắt Cách giữa các byte để có một chuỗi liền mạch.
Để dịch nhị phân sang văn bản, dán các bit vào khung bên phải. Các nhóm 8 bit được đọc là byte. Một số trang in ASCII bằng 7 bit (1001000 1101001); miễn là các nhóm cách nhau bằng dấu cách, chúng được thêm một số 0 ở đầu và đọc đúng. Nếu không có dấu cách, tổng số bit phải là bội số của 8, và thông báo lỗi cho biết đã đếm được bao nhiêu bit để bạn tìm ra chữ số bị thiếu.
Hex hoạt động tương tự, hai chữ số cho mỗi byte. Khi giải mã, các tiền tố và dấu ngăn như 0x, \x, dấu hai chấm và dấu phẩy được bỏ đi, nên bạn dán thẳng từ trình gỡ lỗi hoặc mảng C được.
Mã hóa và giải mã URL
Mã hóa URL thay các ký tự không an toàn bằng % và hai chữ số hex: dấu cách thành %20, é thành %C3%A9. Hãy chọn đúng phạm vi:
- Thành phần mã hóa mọi thứ trừ chữ cái, chữ số và - _ . ! ~ * ' ( ). Dùng cho một giá trị truy vấn riêng lẻ, chẳng hạn ?q=rock%20%26%20roll. Nếu dùng Toàn bộ URL ở đây, dấu & sẽ được giữ lại và tách tham số của bạn làm đôi.
- Toàn bộ URL không đụng đến : / ? # & =, nên cả địa chỉ vẫn bấm được.
- Dấu cách thành + giống cách biểu mẫu HTML gửi dữ liệu. Tick khi giải mã văn bản sao chép từ một lần gửi biểu mẫu hoặc URL tìm kiếm, nếu không các dấu + sẽ còn nguyên trong kết quả.
Thực thể HTML
Chế độ HTML thoát năm ký tự có thể làm hỏng mã đánh dấu: & < > " và '. Vì vậy <b> thành <b> và hiện ra dưới dạng chữ thay vì in đậm. Khi giải mã, công cụ hiểu cả thực thể có tên như é và lẫn thực thể số như € (€).
Chuyển ảnh sang Base64 data URI
Thả một file vào khung phía dưới để lấy Base64 của nó, sẵn ở dạng data URI, chuỗi thuần, thẻ <img> hoặc nền CSS. Phần hiển thị dung lượng cho thấy cái giá phải trả. Base64 làm tăng thêm một phần ba, nên chỉ đáng dùng cho thứ nhỏ như biểu tượng 1 KB, nơi tiết kiệm một yêu cầu HTTP quan trọng hơn vài byte dư. Với ảnh 200 KB, file ảnh thông thường tốt hơn: nhỏ hơn, được lưu đệm, và không làm HTML hay CSS phình to.
| Dung lượng file | Dung lượng Base64 |
|---|---|
| 1 KB (1.024 byte) | 1.368 ký tự |
| 10 KB | 13.656 ký tự |
| 50 KB | 68.268 ký tự |
| 1 MB | 1.398.104 ký tự |
Chiều ngược lại cũng được. Dán Base64 hoặc data URI vào bên phải và, nếu đó không phải văn bản, công cụ đọc vài byte đầu để xác định loại file (PNG, JPEG, GIF, WebP, PDF, ZIP, MP3 và nhiều loại khác), hiện bản xem trước cho ảnh và cho tải về với đúng phần mở rộng.
Không có gì được tải lên. Điều này quan trọng hơn bình thường ở đây, vì những chuỗi người ta giải mã thường là khóa API, token phiên và tệp đính kèm email.
Câu hỏi thường gặp
Làm sao giải mã Base64?
Dán chuỗi Base64 vào ô bên phải, văn bản đã giải mã hiện ngay ở bên trái. Ví dụ SGVsbG8= giải mã thành Hello. Nếu kết quả là ảnh hoặc PDF chứ không phải văn bản, nút Lưu thành file sẽ xuất hiện.
Làm sao chuyển văn bản sang nhị phân?
Chọn Nhị phân và gõ văn bản vào bên trái. Mỗi byte thành 8 bit, nên Hi thành 01001000 01101001. Chữ ngoài bảng chữ cái tiếng Anh, như é hay chữ tiếng Việt có dấu, chiếm từ hai byte trở lên trong UTF-8, tức 16 bit trở lên.
Làm sao dịch mã nhị phân trở lại thành chữ?
Chọn Nhị phân và dán dãy số 0 và 1 vào ô bên phải. Mỗi nhóm 8 bit được đọc thành một byte, nên 01001000 01101001 đọc là Hi. Nhóm 7 bit cách nhau bằng dấu cách cũng dùng được; chúng được thêm số 0 ở đầu.
Làm sao biến ảnh thành data URI Base64?
Thả ảnh vào ô file ở cuối trang và sao chép kết quả. Ảnh PNG thành data:image/png;base64,iVBORw0KGgo… để bạn dán vào img src hoặc nền CSS. Kết quả sẽ lớn hơn file khoảng 33%.
Vì sao Base64 lớn hơn bản gốc khoảng 33%?
Base64 viết mỗi 3 byte thành 4 ký tự, nên 30 KB ảnh thành khoảng 40 KB văn bản. Ngắt dòng MIME sau mỗi 76 ký tự cộng thêm khoảng 2,6%. Vì vậy data URI chỉ hợp lý với file nhỏ.
Base64 và Base64 an toàn cho URL khác nhau thế nào?
Base64 an toàn cho URL đổi + thành - và / thành _, thường bỏ luôn dấu = ở cuối, để chuỗi nằm được trong URL hoặc tên file. Token JWT dùng kiểu này. Công cụ giải mã này tự nhận cả hai bảng ký tự.
Làm sao giải mã URL có %20 và %3A?
Chọn URL và dán văn bản vào bên phải. %20 thành dấu cách và %3A thành dấu hai chấm, nên https%3A%2F%2Fexample.com đọc là https://example.com. Tích Dấu cách thành + nếu văn bản lấy từ biểu mẫu, nơi dấu cách được viết là +.
Văn bản hoặc file của tôi có bị gửi lên máy chủ không?
Không. Mọi việc mã hóa và giải mã chạy trong trình duyệt bằng JavaScript, nên dùng an toàn cho API key, token và file riêng tư.