การเข้ารหัส

JWT Encoder/Decoder

เข้ารหัสและถอดรหัสโทเคน JWT — header, payload, ลายเซ็น HMAC และฟิลด์มาตรฐาน

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.

บทความเกี่ยวกับเครื่องมือนี้: JWT: โครงสร้างโทเคนและความหมายของการ "ถอดรหัส" JWT

คำถามที่พบบ่อย

การถอดรหัส JWT ยืนยันลายเซ็นด้วยหรือไม่?

ไม่ การถอดรหัสเป็นเพียงการทำ base64url-decode ส่วนหัวและ payload เพื่อให้อ่าน claim ได้เท่านั้น ไม่ได้พิสูจน์ว่าโทเคนนั้นแท้จริง หากต้องการยืนยันลายเซ็นจริง ๆ ต้องป้อนคีย์ลับหรือคีย์สาธารณะที่ถูกต้องที่นี่

การวาง JWT จริงลงในเครื่องมือนี้ปลอดภัยหรือไม่?

การถอดรหัสและการเซ็นทั้งหมดทำในเบราว์เซอร์ของคุณ โทเคนและคีย์ลับใด ๆ ที่ป้อนจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ อย่างไรก็ตาม ควรระมัดระวังกับโทเคนจากระบบจริง เพราะใครก็ตามที่เห็น JWT ที่ถอดรหัสแล้วสามารถอ่าน claim ได้

ทำไมโทเคนของฉันแสดงว่าหมดอายุทั้งที่ยังใช้งานได้ในแอป?

ตัวบ่งชี้หมดอายุ/ใช้ได้ที่นี่เปรียบเทียบ claim exp กับเวลาปัจจุบันเท่านั้น ไม่ได้ตรวจสอบค่าความคลาดเคลื่อนของนาฬิกาหรือกฎการตรวจสอบอื่น ๆ ที่เซิร์ฟเวอร์หรือไลบรารีของคุณอาจใช้

การโจมตีด้วยการสวมรอยอัลกอริทึมเป็น "none" คืออะไร?

หากเบิร์กเอนด์เชื่อฟิลด์ alg จาก header ของโทเค็นอย่างไร้เดียงสา ผู้โจมตีสามารถแทนที่ด้วย none ตัดลายเซ็นทิ้ง แล้วโทเค็นที่มีข้อมูลใด ๆ ก็จะผ่านการตรวจสอบ ไลบรารีที่เชื่อถือได้จะบังคับให้ระบุอัลกอริทึมที่คาดหวังไว้อย่างชัดเจนตอนตรวจสอบ

ทำไมไม่ควรเก็บ JWT ไว้ใน localStorage สำหรับเซสชันที่ละเอียดอ่อน?

localStorage เข้าถึงได้จากโค้ด JavaScript ใด ๆ บนหน้าเว็บ จึงเสี่ยงต่อ XSS — สคริปต์อันตรายสามารถขโมยโทเค็นได้ สำหรับโทเค็นเซสชันควรใช้ httpOnly-cookie ซึ่ง JavaScript เข้าถึงไม่ได้แทน จะปลอดภัยกว่า

บทความ: การเข้ารหัส

Base64: การเข้ารหัสมีไว้ทำไมและทำงานอย่างไร

Base64 เปลี่ยนข้อมูลไบนารีเป็นข้อความ ASCII อย่างไร และเมื่อไหร่ที่จำเป็นต้องใช้จริง ๆ

Base32: ต่างจาก Base64 อย่างไรและสะดวกกว่าเมื่อไหร่

ตัวอักษร Base32 ที่ไม่แยกตัวพิมพ์เล็กใหญ่ และกรณีที่สะดวกกว่า Base64

URL Encode/Decode: percent-encoding ในลิงก์

อักขระพิเศษในที่อยู่และพารามิเตอร์กลายเป็นลำดับ %XX ได้อย่างไร

HTML Entities: วิธีแสดงอักขระพิเศษอย่างปลอดภัย

ทำไมต้อง escape อักขระ < > & และสิ่งนี้ป้องกันไม่ให้มาร์กอัปเสียหายได้อย่างไร

Unicode Escape: ลำดับ \uXXXX หมายความว่าอย่างไร

ลำดับแบบ A ใน JSON และสตริง JS มาจากไหน และหมายความว่าอย่างไร

ROT13 และรหัสซีซาร์: การแทนที่อักขระแบบง่าย

ทำไมการเลื่อน 13 ตัวอักษรทำให้ ROT13 ผกผันในตัวเอง และทำไมยังมีการใช้อยู่ในปัจจุบัน

Punycode: โดเมนสากลทำงานใน DNS อย่างไร

โดเมนที่มีอักขระไม่ใช่ละตินกลายเป็นรูปแบบ ASCII ที่มีคำนำหน้า xn-- ได้อย่างไร

รหัสมอร์ส: ข้อความกลายเป็นจุดและขีดได้อย่างไร

หลักการเข้ารหัสตัวอักษรเป็นจุดและขีด และรหัสมอร์สยังใช้ที่ไหนอยู่บ้างในปัจจุบัน

Data URI: เมื่อไหร่ควรฝังรูปภาพลงในโค้ดโดยตรง

Data URI ฝังเนื้อหาของไฟล์ลงใน HTML หรือ CSS โดยตรงอย่างไร และเมื่อไหร่ที่คุ้มค่า

Gzip + Base64: บีบอัดข้อมูลเพื่อส่งเป็นข้อความ

ทำไมข้อมูลไบนารีที่บีบอัดแล้วจึงถูกเข้ารหัสด้วย Base64 อีกครั้งก่อนใส่ลงในฟิลด์ข้อความ

XML Entities: การ escape อักขระในเอกสาร XML

เอนทิตี XML ที่จำเป็นห้าตัว ซึ่งหากไม่มีเอกสารจะเสียหายขณะแยกวิเคราะห์