Mã hóa

JWT Encoder/Decoder

Mã hóa và giải mã token JWT — header, payload, chữ ký HMAC và các trường chuẩn.

A JWT (JSON Web Token) is a compact format for transmitting signed data, made of three dot-separated parts: a header, a payload, and a signature. This tool decodes any JWT and shows all three parts, and can also build a new token signed with HMAC.

Decoding does not verify the signature — reading a token's contents needs no secret key. Verifying the signature only matters when you need to trust the token as genuine.

How to use it

Common uses

Things to keep in mind

A JWT is not encrypted, only Base64URL-encoded — anyone can read the payload. Never put passwords or other secrets in it.

The signature protects against tampering, not against being read. For confidentiality you need extra encryption (JWE) or an HTTPS transport.

Bài viết về công cụ này: JWT: cấu trúc token và "giải mã" JWT nghĩa là gì

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

Giải mã JWT có xác minh chữ ký của nó không?

Không. Việc giải mã chỉ base64url-decode phần header và payload để bạn đọc được các claim — điều này không chứng minh token là xác thực. Để thực sự xác minh chữ ký, bạn cần nhập đúng khóa bí mật hoặc khóa công khai vào đây.

Dán một JWT thật vào công cụ này có an toàn không?

Việc giải mã và ký diễn ra hoàn toàn trong trình duyệt của bạn — token và bất kỳ khóa bí mật nào bạn nhập không bao giờ được gửi tới máy chủ. Tuy vậy, hãy cẩn thận với token từ hệ thống production, vì bất kỳ ai thấy JWT đã giải mã đều có thể đọc được các claim.

Vì sao token của tôi hiện đã hết hạn dù vẫn hoạt động trong ứng dụng?

Chỉ báo Hết hạn/Hợp lệ ở đây chỉ so sánh claim exp với thời gian hiện tại — nó không kiểm tra dung sai lệch đồng hồ hay các quy tắc xác thực khác mà máy chủ hoặc thư viện của bạn có thể áp dụng.

Tấn công đánh tráo thuật toán thành "none" là gì?

Nếu backend ngây thơ tin tưởng trường alg lấy từ header của token, kẻ tấn công có thể đổi nó thành none, bỏ chữ ký — và token chứa dữ liệu tùy ý sẽ vượt qua kiểm tra. Các thư viện đáng tin cậy yêu cầu chỉ định rõ thuật toán mong đợi khi xác minh.

Vì sao không nên lưu JWT trong localStorage cho các phiên nhạy cảm?

localStorage có thể truy cập được từ bất kỳ đoạn JavaScript nào trên trang, nên dễ bị tấn công qua XSS — một script độc hại có thể đánh cắp token. Với token phiên, dùng httpOnly-cookie an toàn hơn, vì JavaScript không thể truy cập được.

Bài viết: Mã hóa

Base64: mã hóa để làm gì và hoạt động ra sao

Base64 biến dữ liệu nhị phân thành văn bản ASCII như thế nào và khi nào thực sự cần đến nó.

Base32: khác gì với Base64 và khi nào tiện hơn

Bảng chữ cái Base32 không phân biệt hoa thường và các trường hợp nó tiện hơn Base64.

URL Encode/Decode: percent-encoding trong liên kết

Các ký tự đặc biệt trong địa chỉ và tham số trở thành chuỗi %XX như thế nào.

HTML Entities: cách hiển thị ký tự đặc biệt an toàn

Vì sao các ký tự < > & cần được escape và điều đó giúp tránh hỏng mã HTML thế nào.

Unicode Escape: chuỗi \uXXXX nghĩa là gì

Chuỗi kiểu \u0041 trong JSON và chuỗi JS đến từ đâu và chúng nghĩa là gì.

ROT13 và mật mã Caesar: thay thế ký tự đơn giản

Vì sao dịch 13 chữ cái khiến ROT13 tự nghịch đảo, và vì sao ngày nay người ta vẫn dùng nó.

Punycode: tên miền quốc tế hóa hoạt động thế nào trong DNS

Một tên miền chứa ký tự không phải Latinh trở thành dạng ASCII với tiền tố xn-- như thế nào.

Mã Morse: văn bản biến thành chấm và gạch ra sao

Nguyên lý mã hóa chữ cái thành chấm và gạch, và mã Morse còn được dùng ở đâu hiện nay.

Data URI: khi nào nên nhúng hình ảnh trực tiếp vào mã

Một Data URI nhúng nội dung tệp trực tiếp vào HTML hoặc CSS ra sao, và khi nào đáng làm vậy.

Gzip + Base64: nén dữ liệu để truyền dưới dạng văn bản

Vì sao dữ liệu nhị phân đã nén còn được mã hóa Base64 trước khi đưa vào trường văn bản.

XML Entities: escape ký tự trong tài liệu XML

Năm entity XML bắt buộc, thiếu chúng tài liệu sẽ hỏng khi phân tích cú pháp.