Bộ giải mã JWT

Giải mã tiêu đề và phần tải trọng JWT ngay lập tức, ngay trong trình duyệt của bạn.

Dán JWT của bạn
Sẵn sàng. Hãy dán một JWT để giải mã.

Token của bạn được giải mã ngay trong trình duyệt. Không có gì được tải lên BroBroGo.

Hỏi đáp

Dán JWT của tôi vào đây có an toàn không?

Có. Việc giải mã diễn ra hoàn toàn trong trình duyệt của bạn — token của bạn không bao giờ được gửi đến BroBroGo.

Công cụ này có xác minh chữ ký không?

Không. Công cụ này chỉ giải mã phần tiêu đề (header) và phần tải trọng (payload) để bạn đọc. Việc xác minh chữ ký yêu cầu khóa bí mật hoặc khóa công khai, điều mà công cụ này không bao giờ yêu cầu.

Làm thế nào để tôi biết token của mình đã hết hạn hay chưa?

Bộ giải mã đọc trường exp và hiển thị một huy hiệu trạng thái — hợp lệ, đã hết hạn, chưa có hiệu lực hoặc không có thời gian hết hạn — ngay bên cạnh token đã giải mã.

Cấu trúc của một JSON Web Token (JWT)

JSON Web Token (JWT) là một phương tiện mã hóa thông tin dưới dạng chuỗi ký tự để truyền tải an toàn giữa các bên. Một JWT tiêu chuẩn luôn bao gồm ba phần riêng biệt, được phân tách với nhau bằng hai dấu chấm. Ba phần này bao gồm:

  • Tiêu đề (Header): Chứa thông tin về loại token và thuật toán mã hóa được sử dụng.
  • Tải trọng (Payload): Chứa các tuyên bố (claims) về thực thể (thường là người dùng) và các dữ liệu bổ sung.
  • Chữ ký (Signature): Được tạo ra bằng cách mã hóa phần tiêu đề, phần tải trọng kết hợp với một khóa bí mật hoặc khóa công khai để đảm bảo token không bị giả mạo.

Mỗi phần trong JWT được mã hóa bằng chuẩn Base64URL trước khi ghép lại thành chuỗi hoàn chỉnh. Base64URL là một biến thể của Base64, trong đó các ký tự có thể gây lỗi trên URL như +/ được thay thế tương ứng bằng -_, đồng thời loại bỏ ký tự đệm =.

Giải mã tiêu đề (Header) và các thuộc tính phổ biến

Tiêu đề của JWT là một đối tượng JSON chứa siêu dữ liệu về phương thức hoạt động của token. Khi được giải mã từ Base64URL sang định dạng JSON chuẩn, tiêu đề thường chứa hai thuộc tính chính:

  • alg (Thuật toán): Xác định thuật toán mã hóa được sử dụng để tạo chữ ký, ví dụ như HS256 (HMAC sử dụng SHA-256) hoặc RS256 (RSA sử dụng SHA-256).
  • typ (Loại): Xác định loại của token, thông thường giá trị này là "JWT".

Bộ giải mã JWT sẽ trích xuất các thông tin này và hiển thị trực quan tại các mục Thuật toán và Loại trên giao diện. Nếu phần tiêu đề không tuân thủ đúng cấu trúc Base64URL, hệ thống sẽ báo lỗi Không thể giải mã tiêu đề — Base64URL không hợp lệ.. Trong trường hợp giải mã thành công chuỗi Base64URL nhưng kết quả thu được không phải là một đối tượng JSON đúng cú pháp, thông báo Tiêu đề không phải là định dạng JSON hợp lệ. sẽ xuất hiện.

Giải mã phần tải trọng (Payload) và các tuyên bố thời gian

Phần tải trọng chứa các thông tin thực tế mà hệ thống cần truyền tải, được gọi là các tuyên bố (claims). Các tuyên bố này được chia thành ba nhóm: tuyên bố đã đăng ký (registered), tuyên bố công khai (public) và tuyên bố riêng tư (private). Trong đó, các tuyên bố thời gian đóng vai trò quan trọng trong việc kiểm soát vòng đời của token:

  • iat (Issued At): Thời điểm token được phát hành, biểu diễn dưới dạng thời gian Unix (số giây tính từ ngày 01/01/1970).
  • exp (Expiration Time): Thời điểm token hết hiệu lực, cũng được biểu diễn dưới dạng thời gian Unix.

Công cụ đọc các giá trị này để hiển thị thông tin tại mục Được phát hành lúc và Hết hạn. Dựa trên giá trị của trường exp, trạng thái hiệu lực của token sẽ được xác định qua các huy hiệu cụ thể:

  • Hợp lệ: Thời gian hiện tại nằm trước thời điểm hết hạn ghi trong trường exp.
  • Đã hết hạn: Thời gian hiện tại đã vượt quá mốc thời gian ghi trong trường exp.
  • Chưa có hiệu lực: Token được cấu hình để sử dụng trong tương lai và chưa đến thời điểm hoạt động.
  • Không hết hạn: Token không chứa trường exp trong phần tải trọng.

Nếu phần tải trọng gặp lỗi mã hóa, công cụ sẽ hiển thị lỗi Không thể giải mã phần tải trọng (payload) — Base64URL không hợp lệ. hoặc Phần tải trọng (payload) không phải là định dạng JSON hợp lệ. tùy theo từng trường hợp lỗi cụ thể.

Sự khác biệt giữa giải mã và xác minh chữ ký JWT

Có một sự khác biệt cốt lõi giữa việc giải mã (decoding) và xác minh (verifying) một JWT:

Đặc điểm Giải mã (Decoding) Xác minh (Verifying)
Mục đích Chuyển đổi chuỗi Base64URL thành văn bản JSON có thể đọc được. Kiểm tra tính toàn vẹn và nguồn gốc của token.
Yêu cầu khóa Không yêu cầu bất kỳ khóa bí mật hay khóa công khai nào. Bắt buộc phải có khóa bí mật (đối với thuật toán đối xứng) hoặc khóa công khai (đối với thuật toán bất đối xứng).
Độ tin cậy Chỉ hiển thị nội dung bên trong, không chứng minh được nội dung đó có bị chỉnh sửa hay không. Đảm bảo token chưa bị thay đổi bởi bên thứ ba kể từ khi được phát hành.

Công cụ này chỉ thực hiện chức năng giải mã thông tin từ chuỗi có sẵn. Công cụ này chỉ kiểm tra claim exp — không xác minh chữ ký, nhà phát hành hoặc đối tượng nhận.. Việc bỏ qua bước xác minh chữ ký trong môi trường vận hành thực tế có thể dẫn đến các rủi ro bảo mật nghiêm trọng, do kẻ tấn công có thể dễ dàng thay đổi nội dung phần tải trọng (ví dụ: thay đổi quyền hạn người dùng) rồi mã hóa lại thành chuỗi Base64URL mới.

Nguyên tắc xử lý dữ liệu và quyền riêng tư

Khi sử dụng các công cụ trực tuyến để kiểm tra dữ liệu nhạy cảm như JWT, vấn đề an toàn thông tin luôn được đặt lên hàng đầu. Token của bạn được giải mã ngay trong trình duyệt. Không có gì được tải lên BroBroGo..

Toàn bộ quá trình phân tách chuỗi, giải mã Base64URL và phân tích cú pháp JSON đều được thực hiện cục bộ bằng mã JavaScript chạy trực tiếp trên thiết bị của người dùng. Không có bất kỳ dữ liệu nào, bao gồm cả chuỗi JWT đầu vào hay kết quả giải mã, được truyền tải qua mạng internet về máy chủ. Do đó, quá trình xử lý này hạn chế tối đa nguy cơ rò rỉ mã token hoặc thông tin định danh của người dùng ra môi trường bên ngoài.

Quy trình xử lý lỗi và các giới hạn đầu vào

Để đảm bảo tính chính xác, công cụ áp dụng các quy tắc kiểm tra nghiêm ngặt đối với chuỗi đầu vào:

  • Kiểm tra cấu trúc: Nếu chuỗi nhập vào không chứa đúng hai dấu chấm để phân tách ba phần, hệ thống sẽ báo lỗi Không phải là JWT hợp lệ — yêu cầu cấu trúc gồm ba phần phân tách bằng dấu chấm..
  • Giới hạn độ dài: Nếu chuỗi nhập vào vượt quá giới hạn độ dài thông thường của một token thực tế, hệ thống sẽ hiển thị cảnh báo Chuỗi quá dài để có thể là một JWT thực tế..
  • Ẩn vùng kết quả: Khi phát hiện bất kỳ lỗi định dạng nào, các khu vực hiển thị kết quả giải mã sẽ tự động ẩn đi để tránh nhầm lẫn.
  • Trạng thái chờ: Khi trường nhập liệu trống, công cụ giữ trạng thái Sẵn sàng. Hãy dán một JWT để giải mã.. Khi người dùng nhấn nút Xóa, toàn bộ dữ liệu cũ sẽ bị xóa bỏ và tiêu điểm của con trỏ chuột sẽ tự động quay trở lại ô nhập liệu ban đầu.

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

Dán JWT của tôi vào đây có an toàn không? Có. Việc giải mã diễn ra hoàn toàn trong trình duyệt của bạn — token của bạn không bao giờ được gửi đến BroBroGo..

Công cụ này có xác minh chữ ký không? Không. Công cụ này chỉ giải mã phần tiêu đề (header) và phần tải trọng (payload) để bạn đọc. Việc xác minh chữ ký yêu cầu khóa bí mật hoặc khóa công khai, điều mà công cụ này không bao giờ yêu cầu.

Làm thế nào để tôi biết token của mình đã hết hạn hay chưa? Bộ giải mã đọc trường exp và hiển thị một huy hiệu trạng thái — hợp lệ, đã hết hạn, chưa có hiệu lực hoặc không có thời gian hết hạn — ngay bên cạnh token đã giải mã.

Tại sao tôi nhận được lỗi về Base64URL khi dán token? Lỗi này xảy ra khi một trong các phần của JWT (tiêu đề hoặc tải trọng) chứa các ký tự không hợp lệ theo chuẩn mã hóa Base64URL, khiến công cụ không thể dịch ngược chuỗi ký tự đó về dạng văn bản gốc.