logo
GeekFormat

สร้างและตรวจสอบ 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 และการตรวจสอบความปลอดภัยของข้อมูล

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

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

  • พัฒนา 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 แบบกำหนดเอง

คุณสมบัติ

  • รองรับหลายอัลกอริทึม: 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

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

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

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

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 ที่ถูกต้องได้ การเปลี่ยนคีย์เป็นประจำเป็นแนวปฏิบัติด้านความปลอดภัยที่ดี

สร้างและตรวจสอบ 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 ของเบราว์เซอร์เพื่อยืนยันว่าไม่มีการร้องขอภายนอก

เข้ารหัสและถอดรหัส AESแปลงเสียงเป็น Base64การเข้ารหัส Base32การเข้ารหัส Base58ถอดรหัส Base64 หลายรายการเข้ารหัส Base64 หลายรายการล้างอักขระ Base64แปลง Data URLถอดรหัส Base64เปรียบเทียบ Base64การเข้ารหัส Base64จัดรูปแบบ Base64ตัวแปลง Base64-Hexรวม Base64 หลายบรรทัดMIME Base64จัดการ Padding Base64แยก Base64 หลายบรรทัดสถิติความยาว Base64Base64 เป็นเสียงBase64 เป็นไฟล์Base64 เป็น HexBase64 เป็นรูปภาพBase64 เป็นข้อความBase64 เป็นวิดีโอURL Safe Base64ตรวจสอบรูปแบบ Base64ตัวแปลงรหัส Base85การแปลงเลขฐานสองรหัสซีซาร์ (Caesar Cipher)เข้ารหัสและถอดรหัส DESเครื่องมือคำนวณแฮชไฟล์แปลงไฟล์เป็น Base64เลขฐานสิบหก (Hex)สร้างและตรวจสอบ HMACเข้ารหัสและถอดรหัส HTMLแปลงรูปภาพเป็น Base64ทำให้โค้ด Java อ่านยาก (Obfuscate)ทำให้โค้ด JS อ่านยาก (Obfuscate)ถอดรหัส ตรวจสอบ และสร้าง JWTแฮช MD5ตัวแปลงรหัสมอร์สเครื่องมือสร้างคีย์ PBKDF2ทำให้โค้ด PHP อ่านยาก (Obfuscate)ทำให้โค้ด Python อ่านยาก (Obfuscate)เครื่องมือสร้าง SHA-1 แฮชแฮช SHA-256เครื่องมือสร้าง SHA-512 แฮชเปรียบเทียบข้อความอย่างปลอดภัยแปลงข้อความเป็น Base64ตัวแปลงรหัส Unicodeการเข้ารหัส URLวิดีโอเป็น Base64