สร้างและตรวจสอบ HMAC

อัลกอริธึม Hshi

ความยาวคีย์ที่แนะนําตรงกับความยาวของเฮชออก: SHA-1 = 20 bytes, SHA-256=32 bytes, SHA-384=48 bytes, SHA-512=64 bytes

เนื้อหาของจดหมาย0 อักขระ
ลายเซ็น HMAC (hix)
รอการป้อนข้อมูล…

หมายเหตุ

  • ลายเซ็น HMAC ที่สร้างจากกุญแจและอัลกอริทึม Hshi สําหรับการตรวจสอบสิทธิ์แหล่งและความถูกต้อง
  • รองรับ SHA-1/HA-256/HA-384/HA-512
  • สร้างและตรวจความถูกต้องทั้งในเว็บเบราว์เซอร์ภายใน โดยไม่ต้องอัปโหลดข้อมูล
  • การตรวจสอบความถูกต้อง ใช้ค่าความยาวคงที่โดยค่าไบต์เพื่อลดความแตกต่างของเวลา

สร้างและตรวจสอบลายเซ็น HMAC ออนไลน์ฟรี รองรับอัลกอริทึมตระกูล SHA ยอดนิยม เหมาะสำหรับการลงลายเซ็น API และการตรวจสอบความปลอดภัยของข้อมูล

คำแนะนำที่เกี่ยวข้อง

สร้างและตรวจสอบ HMAC คืออะไร?

HMAC (Hash-based Message Authentication Code) เป็นเทคโนโลยีการตรวจสอบข้อความที่กำหนดไว้ใน RFC 2104 HMAC ประมวลผลคีย์ร่วมกับข้อความผ่านฟังก์ชันแฮชเพื่อสร้างลายเซ็นความยาวคงที่ ต่างจากแฮชธรรมดา HMAC ต้องรู้คีย์เพื่อสร้างหรือตรวจสอบลายเซ็น จึงรับประกันทั้งความสมบูรณ์ของข้อความและความถูกต้อง

**HMAC เป็นรากฐานของความปลอดภัย API สมัยใหม่** Stripe, GitHub, Shopify, Slack และ Twilio ใช้ HMAC-SHA256 เซ็นเหตุการณ์ Webhook เพื่อให้แน่ใจว่าคำขอมาจากแพลตฟอร์มจริง AWS ใช้ HMAC-SHA256 สำหรับเซ็นคำขอ Signature V4 อัลกอริทึม HS256 ของ JWT แท้จริงแล้วคือ HMAC-SHA256 การเข้าใจ HMAC เป็นก้าวแรกในการเชี่ยวชาญความปลอดภัย API

**แต่ละแพลตฟอร์มมีรูปแบบลายเซ็นต่างกัน**: รูปแบบของ Stripe คือ `t=timestamp,v1=hex_signature` โดยเซ็น `timestamp.payload`; GitHub ใช้ `X-Hub-Signature-256` รูปแบบ `sha256=hex_signature`; Shopify ใช้ `X-Shopify-Hmac-Sha256` ค่าเป็น Base64 เครื่องมือนี้รองรับการแยกวิเคราะห์และตรวจสอบรูปแบบเหล่านี้โดยอัตโนมัติ

**ทำไมการตรวจสอบลายเซ็นจึงล้มเหลว?** สาเหตุที่พบบ่อยที่สุดคือรูปแบบข้อความไม่ตรง: แพลตฟอร์มอาจเซ็น `timestamp.payload` แทนข้อความดิบ หรือข้อความมีขึ้นบรรทัดใหม่เพิ่มเติม หรือลายเซ็นมีคำนำหน้า (เช่น `sha256=`) ที่ต้องลบออก ตรวจสอบเอกสารแพลตฟอร์มอย่างละเอียดและเปรียบเทียบโดยใช้ค่าฐานสิบหกดิบ

เครื่องมือนี้ใช้ **Web Crypto API** (SubtleCrypto) ในเบราว์เซอร์สำหรับการคำนวณ HMAC —ไลบรารีการเข้ารหัสเดียวกันกับที่ใช้งาน HTTPS และ TLS การคำนวณทั้งหมดเกิดขึ้นภายในเครื่อง คีย์และข้อความไม่ถูกส่งไปยังเซิร์ฟเวอร์ใด ๆ เปิดแผง Network ใน DevTools ของเบราว์เซอร์เพื่อยืนยันว่าไม่มีการร้องขอภายนอก

กรณีการใช้งาน

  • พัฒนา Webhook Stripe: ดีบักการเรียกกลับการชำระเงิน Stripe ตรวจสอบความถูกต้องของเฮดเดอร์ `Stripe-Signature`
  • บูรณาการ Webhook GitHub: ตรวจสอบลายเซ็น `X-Hub-Signature-256` สำหรับเหตุการณ์ Push และ Pull Request ของ GitHub
  • ซิงค์คำสั่งซื้อ Shopify: ตรวจสอบลายเซ็น `X-Shopify-Hmac-Sha256` สำหรับ Webhook อัปเดตคำสั่งซื้อ Shopify
  • ลายเซ็นบอท Slack: ตรวจสอบ `X-Slack-Signature` สำหรับการเรียกกลับเหตุการณ์ Slack
  • ดีบักพัฒนา JWT: เซ็น JWT ด้วย HS256 ตรวจสอบความถูกต้องของโทเค็น
  • เซ็นคำขอ API: ใช้งาน AWS Signature V4 หรือรูปแบบการเซ็น API แบบกำหนดเอง

วิธีการใช้งาน

  1. เลือกอัลกอริทึม: ค่าเริ่มต้น HMAC-SHA256 แนะนำสำหรับ API สมัยใหม่
  2. ใส่ข้อความ: วางข้อความดิบหรือเนื้อหาคำขอ API
  3. ใส่คีย์: ใส่ Webhook Secret หรือ API Secret
  4. เลือกรูปแบบ: เลือกรูปแบบผลลัพธ์ (hex สำหรับ Stripe, Base64URL สำหรับ JWT)
  5. ตรวจสอบลายเซ็น: สลับเป็นโหมดตรวจสอบ วางลายเซ็นที่คาดหวังเพื่อเปรียบเทียบ

คุณสมบัติ

  • รองรับหลายอัลกอริทึม: HMAC-SHA256/384/512, SHA1, MD5 — ครอบคลุม API สมัยใหม่และระบบเก่า
  • ตรวจสอบลายเซ็น Webhook: รองรับรูปแบบลายเซ็น Stripe/GitHub/Shopify/Slack ในตัว พร้อมการแยกวิเคราะห์อัตโนมัติ
  • รูปแบบผลลัพธ์ 3 แบบ: Hex / Base64 / Base64URL — ตรงกับข้อกำหนดของ API หรือแพลตฟอร์มใด ๆ
  • สร้างแบบเรียลไทม์: คำนวณอัตโนมัติเมื่อเปลี่ยนค่าอินพุต พร้อม 300ms debounce ไม่ต้องกดปุ่ม
  • โหมดตรวจสอบลายเซ็น: วางลายเซ็นที่คาดหวังเพื่อเปรียบเทียบ แสดงผลการจับคู่แบบเรียลไทม์
  • ตรวจสอบความยาวคีย์: ตรวจสอบความแข็งแรงของคีย์แบบเรียลไทม์ พร้อมเตือนเมื่อคีย์สั้นเกินไป
  • ประมวลผลในเบราว์เซอร์: Web Crypto API สำหรับการคำนวณภายในเครื่อง คีย์ไม่ถูกอัปโหลดไปยังเซิร์ฟเวอร์
  • รองรับ JWT: ผลลัพธ์ HMAC-SHA256 ใช้โดยตรงสำหรับการเซ็น HS256

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

HMAC กับแฮชธรรมดาต่างกันอย่างไร?

ฟังก์ชันแฮชธรรมดา (เช่น SHA256) คำนวณเฉพาะผลสรุปของข้อความเท่านั้น — ใครก็คำนวณได้ HMAC เพิ่มคีย์ลับเข้าไปในกระบวนการแฮช ดังนั้นเฉพาะผู้ที่มีคีย์เท่านั้นที่สามารถสร้างหรือตรวจสอบลายเซ็นที่ถูกต้องได้ HMAC รับประกันทั้งความสมบูรณ์ของข้อความและความถูกต้อง ในขณะที่แฮชธรรมดาตรวจสอบเฉพาะความสมบูรณ์

วิธีตรวจสอบลายเซ็น Webhook ของ Stripe/GitHub/Shopify?

แต่ละแพลตฟอร์มฟอร์แมttlายเซ็นต่างกัน: Stripe ใช้เฮดเดอร์ `Stripe-Signature` รูปแบบ `t=timestamp,v1=hex_signature` โดยเซ็นสตริง `timestamp.payload`; GitHub ใช้ `X-Hub-Signature-256` รูปแบบ `sha256=hex_signature`; Shopify ใช้ `X-Shopify-Hmac-Sha256` ค่าเป็น Base64 เครื่องมือนี้รองรับการตรวจสอบรูปแบบเหล่านี้โดยตรง

ผลลัพธ์ Hex, Base64 และ Base64URL ต่างกันอย่างไร?

Hex เป็นรูปแบบฐานสิบหก (0-9, A-F) อ่านเข้าใจง่าย เหมาะสำหรับการดีบัก Base64 เป็นการเข้ารหัส 64 ตัวอักษร กะทัดรัดกว่า เหมาะสำหรับฝังใน JSON Base64URL เป็นเวอร์ชันปลอดภัยสำหรับ URL (แทน +/ ด้วย -_) ใช้ในเฮดเดอร์ JWT และพารามิเตอร์ URL

ควรใช้อัลกอริทึม HMAC ไหน?

**แนะนำ HMAC-SHA256**: เป็นมาตรฐานสมัยใหม่สำหรับ API และ Webhook (ใช้โดย Stripe, GitHub, Shopify, Slack) ผลลัพธ์ 32 ไบต์ รองรับสากล SHA-512 ปลอดภัยกว่าแต่ผลลัพธ์ยาวกว่า (64 ไบต์) SHA1 ใช้เฉพาะระบบเก่า MD5 ล้าสมัยแล้วควรใช้เฉพาะกับ API เก่ามาก

ความยาวคีย์ต้องมีข้อกำหนดอย่างไร?

คีย์ยิ่งยาวยิ่งปลอดภัย แนะนำขั้นต่ำ 16 ตัวอักษร (128 บิต) สำหรับการใช้งานจริงแนะนำ 32 ตัวอักษรขึ้นไป เครื่องมือจะตรวจสอบความยาวคีย์และเตือนหากสั้นเกินไป ใช้ตัวสร้างตัวเลขสุ่มที่ปลอดภัยทางการเข้ารหัสสำหรับคีย์ ไม่ใช้รหัสผ่านง่ายๆ หรือสตริงที่คาดเดาได้

ทำไมการตรวจสอบลายเซ็นจึงแสดงว่าไม่ตรงกัน?

สาเหตุที่พบบ่อย: 1) ข้อความมีช่องว่างหรือขึ้นบรรทัดใหม่เพิ่มเติม; 2) แพลตฟอร์มเซ็นสตริงประกอบ (เช่น Stripe เซ็น `timestamp.payload`); 3) ลายเซ็นมีคำนำหน้าที่ต้องลบออก (เช่น `sha256=` ของ GitHub); 4) ใช้อัลกอริทึมต่างกัน ตรวจสอบให้แน่ใจว่าทั้งสองฝ่ายใช้พารามิเตอร์เหมือนกัน

HMAC ใช้สำหรับเซ็น JWT ได้ไหม?

ได้ อัลกอริทึม HS256 ของ JWT คือ HMAC-SHA256 และ HS512 คือ HMAC-SHA512 ผลลัพธ์ HMAC-SHA256 จากเครื่องมือนี้ใช้โดยตรงเป็นเนื้อหา签名สำหรับ HS256 ได้ เฮดเดอร์และ Payload ของ JWT เข้ารหัส Base64URL แล้วเซ็นด้วย HS256

เครื่องมือ HMAC ออนไลน์นี้ปลอดภัยไหม?

เครื่องมือนี้ใช้ Web Crypto API สำหรับการคำนวณทั้งหมดในเบราว์เซอร์ของคุณ คีย์และข้อความไม่ถูกส่งไปยังเซิร์ฟเวอร์ใด ๆ คุณสามารถตรวจสอบได้โดยเปิดแผง Network ใน DevTools ของเบราว์เซอร์ — ไม่มีการร้องขอภายนอก เหมาะสำหรับการทดสอบและการพัฒนา สำหรับคีย์ที่ละเอียดอ่อนสูงแนะนำให้ใช้เครื่องมือออฟไลน์

ลายเซ็น HMAC สามารถปลอมแปลงได้ไหม?

ไม่ได้ ความปลอดภัยของ HMAC ขึ้นอยู่กับความลับของคีย์และความต้านทานการชนของอัลกอริทึมแฮช หากคีย์ยาวและสุ่มเพียงพอ ไม่มีการโจมตีที่รู้จักที่สามารถปลอมลายเซ็น HMAC ที่ถูกต้องได้ การเปลี่ยนคีย์เป็นประจำเป็นแนวปฏิบัติด้านความปลอดภัยที่ดี