Giải mã JWT
Giải mã, kiểm tra chữ ký và ký lại JSON Web Token ngay lập tức — hoàn toàn trên trình duyệt của bạn.
Tạo và ký JWT từ đầu ngay trong trình duyệt. Key không rời khỏi trang này.
Giải mã JWT ngay trên trình duyệt hoạt động thế nào — và vì sao điều đó quan trọng?
Một JSON Web Token trông giống như một chuỗi ký tự vô nghĩa, nhưng thực chất chỉ là ba phần được mã hóa Base64URL nối với nhau bằng dấu chấm: header, payload và signature (chữ ký). Việc giải mã header và payload hoàn toàn không phải là mã hóa (encryption) — bất kỳ ai có token đều đọc được các claim bên trong, đó chính là lý do không bao giờ nên nhét dữ liệu nhạy cảm vào payload của JWT. Vấn đề là những token người ta cần kiểm tra hiếm khi là dữ liệu thử nghiệm bỏ đi. Chúng thường là token phiên đăng nhập thật từ một ứng dụng production, một access token gọi API, hay một cookie đăng nhập lấy trực tiếp từ tab dev tools của trình duyệt khi đang debug — tức là một thông tin xác thực thật, và nếu rơi vào tay kẻ xấu sẽ cấp quyền truy cập thật. Dán token đó vào một website lạ chẳng khác nào giao phiên đăng nhập của bạn cho một server bạn không hề biết gì về nó.
Công cụ này không bao giờ làm vậy. Header và payload được giải mã bằng JavaScript thuần chạy ngay trên trình duyệt của bạn tại thời điểm dán token vào — tách theo dấu chấm, giải mã Base64URL, phân tích thành JSON — và không có gì được gửi đi bất cứ đâu. Việc kiểm tra chữ ký cũng hoạt động tương tự, sử dụng Web Crypto API (`SubtleCrypto`) có sẵn trong mọi trình duyệt hiện đại: các thuật toán HMAC (HS256, HS384, HS512) được kiểm tra bằng secret bạn tự nhập vào, còn các thuật toán RSA (RS256, RS384, RS512) được kiểm tra bằng public key bạn dán vào ở định dạng PEM. Cả secret dùng để mã hóa lẫn quá trình kiểm tra đều chỉ diễn ra trong tab trình duyệt; chỉ cần tải lại trang là mọi thứ — token, secret, key — biến mất hoàn toàn.
Dán một token vào để xem header và payload được hiển thị đẹp mắt, cùng với các claim chuẩn `exp`, `iat`, `nbf` được chuyển sang định dạng ngày giờ dễ đọc, kèm nhãn "Đã hết hạn" rõ ràng nếu `exp` của token đã trôi qua — rất hữu ích khi cần xác minh một báo cáo lỗi kiểu "tự nhiên bị đăng xuất" thực chất chỉ là do token hết hạn. Nếu thuật toán là HS256/384/512 hoặc RS256/384/512, hãy nhập đúng secret hoặc public key tương ứng để kiểm tra chữ ký có thật hay đã bị giả mạo. Các thuật toán ngoài danh sách này (như ES256 hay `none` không ký) vẫn giải mã bình thường, nhưng công cụ sẽ không giả vờ kiểm tra được chữ ký khi thực tế chưa hỗ trợ. Với việc phát triển cục bộ, khung chỉnh sửa header/payload cho phép bạn thay đổi một claim — ví dụ đổi user ID hoặc role — rồi ký lại token bằng đúng secret HS256 mà server thử nghiệm của bạn đang dùng, một cách làm rất phổ biến để kiểm tra logic phân quyền mà không cần dựng cả luồng đăng nhập.
Vì payload của JWT sau khi giải mã chỉ là JSON thuần túy, dễ dàng đọc được, nên nó kết hợp rất tự nhiên với công cụ Định dạng & kiểm tra JSON nếu bạn cần soi kỹ một claim lồng nhau nhiều tầng. Một lưu ý bảo mật đáng nhắc lại: vì việc giải mã không cần bất kỳ secret nào, hãy coi mọi token là dữ liệu nhạy cảm ngay khi vừa kiểm tra xong, và nếu không chắc token đó từng được dán vào những công cụ không đáng tin nào khác trước khi đến đây, hãy chủ động thu hồi/đổi lại thông tin xác thực đó.
Câu hỏi thường gặp
Công cụ có xác minh được chữ ký JWT, không chỉ giải mã không?
Có — hỗ trợ xác minh chữ ký HMAC (HS256/384/512) và RSA (RS256/384/512).
Token hay secret của tôi có bị gửi đi đâu không?
Không — giải mã, xác minh và ký lại đều diễn ra tại chỗ trên trình duyệt bằng Web Crypto API.
Có thể sửa payload rồi tạo token đã ký mới không?
Có — sửa JSON của header/payload rồi ký lại bằng secret HMAC để nhận token mới.