DevToolPal
ไทย

ตัวสร้าง HMAC

คำนวณ HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 และ HMAC-SHA512 ของข้อความด้วยคีย์ลับ เป็นเลขฐานสิบหกหรือ Base64

ทำงานในเครื่อง ไม่มีการอัปโหลด

ตัวเลือก

รูปแบบคีย์
ผลลัพธ์

ข้อความ

0 ตัวอักษร · 0 B

HMAC

ผลลัพธ์จะแสดงที่นี่

เครื่องมือนี้ทำอะไร

HMAC (รหัสยืนยันข้อความแบบใช้แฮช, RFC 2104) รวมคีย์ลับเข้ากับฟังก์ชันแฮชเพื่อลงนามข้อความ ผู้รับที่รู้คีย์เดียวกันจะคำนวณ HMAC ใหม่แล้วเทียบกับค่าที่ส่งมา หากข้อความถูกแก้ไขหรือผู้ส่งไม่รู้คีย์ ค่าจะไม่ตรงกัน

HMAC ถูกใช้แทบทุกที่ ทั้งลายเซ็น webhook (GitHub, Stripe, Slack) คำขอ API ที่ลงนาม JWT แบบ HS256 การลงนามคุกกี้ และรหัสผ่านใช้ครั้งเดียว เครื่องมือนี้คำนวณ HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 และ HMAC-SHA512 พร้อมกัน เพื่อให้เทียบกับอัลกอริทึมที่ระบบของคุณใช้ได้ทันที

วิธีใช้

  1. พิมพ์ คีย์ลับ หากคีย์เป็นไบต์แบบฐานสิบหกหรือ Base64 แทนข้อความธรรมดา ให้เปลี่ยน รูปแบบคีย์
  2. วาง ข้อความ หรือคลิก ตัวอย่าง
  3. HMAC ทั้งหมดอัปเดตขณะพิมพ์ เลือกผลลัพธ์ ฐานสิบหก หรือ Base64 แล้วคัดลอกค่าที่ต้องการ

ข้อความถูกเข้ารหัสเป็น UTF-8 ตามที่พิมพ์ทุกตัว รวมช่องว่างและการขึ้นบรรทัดใหม่

ตัวอย่าง

เมื่อคีย์คือ key และข้อความคือ The quick brown fox jumps over the lazy dog ค่า HMAC-SHA256 คือ f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 ตรวจสอบค่าเดียวกันได้ในคอมมานด์ไลน์:

echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"

สังเกต -n หากไม่มี echo จะเติมการขึ้นบรรทัดใหม่และ HMAC จะเปลี่ยนไป

การตรวจสอบ webhook

การตรวจสอบ webhook ให้นำ body ดิบของคำขอก่อนแปลง JSON มาประกอบสตริงตามเอกสารของผู้ให้บริการ (มักเป็น timestamp.body) คำนวณ HMAC ด้วย signing secret แล้วเทียบกับ header ลายเซ็น ในโค้ดของคุณเอง ให้เทียบลายเซ็นด้วยฟังก์ชันเวลาคงที่เพื่อป้องกันการโจมตีด้านเวลา

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

› แฮชกับ HMAC ต่างกันอย่างไร

แฮชทั่วไปอย่าง SHA-256 ใครก็คำนวณได้ HMAC ผสมคีย์ลับเข้าไปในแฮช จึงมีเพียงผู้ที่รู้คีย์เท่านั้นที่สร้างหรือตรวจสอบค่าได้ จึงเป็นรหัสยืนยันความถูกต้องของข้อความ ไม่ใช่แค่ checksum

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

โดยทั่วไปใช้ HMAC-SHA256 ซึ่ง API และ webhook ส่วนใหญ่ต้องการ HMAC-SHA512 ก็ใช้ได้ HMAC-MD5 และ HMAC-SHA1 ยังถือว่าปลอดภัยเมื่อใช้เป็น MAC แต่ควรใช้เฉพาะเมื่อระบบเก่าบังคับ

› ทำไม HMAC ของฉันไม่ตรงกับของเซิร์ฟเวอร์

ตรวจสอบไบต์ของข้อความให้ตรงทุกตัว (การขึ้นบรรทัดใหม่ท้ายข้อความหรือช่องว่างใน JSON ที่ต่างกันทำให้ผลเปลี่ยนทั้งหมด) รูปแบบคีย์ (ข้อความ hex หรือ Base64) และการเข้ารหัสผลลัพธ์ ผู้ให้บริการ webhook มักลงนามสตริงที่ประกอบจาก timestamp กับ body ดิบของคำขอ

› คีย์ลับของฉันถูกบันทึกหรือส่งไปที่ไหนหรือไม่

ไม่ HMAC คำนวณในเบราว์เซอร์ของคุณ คีย์อยู่ในหน่วยความจำของหน้านี้เท่านั้น ไม่ถูกบันทึก ไม่ถูกเขียนลงแถบที่อยู่ และไม่รวมอยู่ในลิงก์แชร์