สร้างและตรวจสอบ HMAC
ความยาวคีย์ที่แนะนําตรงกับความยาวของเฮชออก: SHA-1 = 20 bytes, SHA-256=32 bytes, SHA-384=48 bytes, SHA-512=64 bytes
หมายเหตุ
- • ลายเซ็น 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 แบบกำหนดเอง
วิธีการใช้งาน
- เลือกอัลกอริทึม: ค่าเริ่มต้น HMAC-SHA256 แนะนำสำหรับ API สมัยใหม่
- ใส่ข้อความ: วางข้อความดิบหรือเนื้อหาคำขอ API
- ใส่คีย์: ใส่ Webhook Secret หรือ API Secret
- เลือกรูปแบบ: เลือกรูปแบบผลลัพธ์ (hex สำหรับ Stripe, Base64URL สำหรับ JWT)
- ตรวจสอบลายเซ็น: สลับเป็นโหมดตรวจสอบ วางลายเซ็นที่คาดหวังเพื่อเปรียบเทียบ
คุณสมบัติ
- รองรับหลายอัลกอริทึม: 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 ที่ถูกต้องได้ การเปลี่ยนคีย์เป็นประจำเป็นแนวปฏิบัติด้านความปลอดภัยที่ดี
- เปรียบเทียบข้อความอย่างปลอดภัย
- การแปลงเลขฐานสอง
- รหัสซีซาร์ (Caesar Cipher)
- ตัวแปลงรหัสมอร์ส
- เลขฐานสิบหก (Hex)
- วิดีโอเป็น Base64
- Base64 เป็นวิดีโอ
- แปลงรูปภาพเป็น Base64
- Base64 เป็นรูปภาพ
- แปลงข้อความเป็น Base64
- Base64 เป็นข้อความ
- ตัวตรวจสอบแฮชไฟล์
- แปลงไฟล์เป็น Base64
- Base64 เป็นไฟล์
- แปลงเสียงเป็น Base64
- Base64 เป็นเสียง
- เข้ารหัสและถอดรหัส AES
- เข้ารหัสและถอดรหัส DES
- ตัวเข้ารหัสและถอดรหัส Base32
- Base58 การเข้ารหัสและถอดรหัส
- การเข้ารหัส Base64
- ถอดรหัส Base64
- เปรียบเทียบ Base64
- แยก Base64
- รวม Base64 หลายบรรทัด
- การจัดรูปแบบ Base64
- ตรวจสอบรูปแบบ Base64
- เข้ารหัส Base64 แบบกลุ่ม
- ถอดรหัส Base64 หลายรายการ
- เครื่องมือล้าง Base64
- เครื่องมือจัดการ padding Base64
- สถิติความยาว Base64
- Base64 เป็น Hex
- ตัวแปลง Base64 DataURL
- ตัวแปลง Base64-Hex
- ตัวแปลงรหัส Base85
- สร้างและตรวจสอบ HMAC
- เครื่องมือสร้างคีย์ PBKDF2
- แฮช MD5
- แฮช SHA-256
- แฮช SHA-1
- แฮช SHA512
- ถอดรหัส ตรวจสอบ และสร้าง JWT
- เข้ารหัสและถอดรหัส HTML
- ตัวแปลงรหัส Unicode
- การเข้ารหัส URL
- URL Safe Base64
- MIME Base64
- ทำให้โค้ด Java อ่านยาก (Obfuscate)
- ทำให้โค้ด JS อ่านยาก (Obfuscate)
- ทำให้โค้ด PHP อ่านยาก (Obfuscate)
- ทำให้โค้ด Python อ่านยาก (Obfuscate)