ESC

ตัวสร้าง HMAC

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

เปรียบเทียบ HMAC

การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณโดยใช้ Web Crypto API ไม่มีข้อมูลถูกส่งไปยังเซิร์ฟเวอร์

ตัวอย่างการใช้งาน

การยืนยันตัวตน API

สร้างลายเซ็น HMAC สำหรับการยืนยันตัวตนคำขอ API ที่ใช้กันทั่วไปใน REST API

การตรวจสอบ Webhook

ตรวจสอบ payload ของ webhook โดยเปรียบเทียบลายเซ็น HMAC จากบริการอย่าง Stripe หรือ GitHub

การเซ็น JWT

สร้างลายเซ็น HMAC-SHA256 สำหรับการเซ็น payload ของ JSON Web Token (JWT)

คุณสมบัติ

หลายอัลกอริทึม

รองรับ HMAC-SHA256, HMAC-SHA384, HMAC-SHA512 และ HMAC-SHA1

เปรียบเทียบ HMAC

เปรียบเทียบ HMAC ที่สร้างกับค่าที่คาดหวังเพื่อตรวจสอบความสมบูรณ์ของข้อความ

หลายรูปแบบผลลัพธ์

ผลลัพธ์ในรูปแบบเลขฐานสิบหกหรือ Base64 สำหรับความต้องการการรวมระบบที่แตกต่างกัน

Web Crypto API

ใช้ Web Crypto API เนทีฟสำหรับการสร้าง HMAC ที่ปลอดภัยในเบราว์เซอร์

วิธีใช้งาน?

1

ป้อนข้อความและคีย์

พิมพ์หรือวางข้อความของคุณและป้อนคีย์ลับของคุณ

2

เลือกอัลกอริทึม

เลือกอัลกอริทึม HMAC (SHA-256, SHA-384, SHA-512 หรือ SHA-1) และรูปแบบผลลัพธ์

3

สร้างและคัดลอก

คลิกสร้าง HMAC และคัดลอกผลลัพธ์ เลือกเปรียบเทียบกับค่า HMAC ที่คาดหวังได้

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

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

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

HMAC-SHA256 คือมาตรฐานอุตสาหกรรมและสิ่งที่บริการส่วนใหญ่ใช้ ได้แก่ AWS Signature Version 4, webhook ของ Stripe, webhook ของ GitHub, webhook ของ Shopify HMAC-SHA512 ให้มาร์จิ้นความปลอดภัยเพิ่มเติมและเร็วกว่า SHA-256 บนฮาร์ดแวร์ 64 บิต หลีกเลี่ยง HMAC-SHA1 สำหรับโปรเจกต์ใหม่ ใช้เฉพาะเมื่อผสานกับระบบเก่าที่ต้องการเท่านั้น

ทั้งคู่แสดงค่า HMAC เดียวกันในการเข้ารหัสต่างกัน Hex (เลขฐานสิบหก) สร้าง 64 ตัวอักษรสำหรับ HMAC-SHA256 อ่านและเปรียบเทียบด้วยตนเองได้ง่ายกว่า Base64 สร้าง 44 ตัวอักษร กะทัดรัดกว่า ใช้กันทั่วไปในเฮดเดอร์ HTTP Authorization, ลายเซ็น JWT และเฮดเดอร์คำขอ API ตรวจสอบว่าบริการเป้าหมายของคุณคาดหวังรูปแบบใดก่อนสร้าง

เมื่อได้รับ webhook จาก Stripe payload จะมาพร้อมเฮดเดอร์ X-Stripe-Signature ที่มี HMAC-SHA256 ของบอดีดิบ เซ็นด้วยคีย์ลับของ endpoint ของคุณ ในการตรวจสอบ: คำนวณ HMAC-SHA256 ของบอดีคำขอดิบโดยใช้ secret ของคุณ จากนั้นเปรียบเทียบกับค่าเฮดเดอร์ หากตรงกัน webhook นั้นแท้จริง GitHub ใช้ X-Hub-Signature-256 แบบเดียวกัน เครื่องมือนี้ให้คุณคำนวณและตรวจสอบลายเซ็นเหล่านี้โดยไม่ต้องเขียนโค้ด

สำหรับ HMAC-SHA256 ความยาวคีย์ที่แนะนำคืออย่างน้อย 32 ไบต์ (256 บิต) ซึ่งตรงกับขนาดผลลัพธ์แฮช คีย์ที่สั้นกว่าลดความปลอดภัย คีย์ที่ยาวกว่าใช้ได้ อย่าใช้สตริงที่จำได้ง่ายเป็นคีย์ มันคาดเดาได้มากเกินไป สร้างคีย์ด้วย RNG ที่ปลอดภัยทางเข้ารหัสและเก็บไว้ในตัวแปรสภาพแวดล้อมหรือตัวจัดการ secret ไม่ใช่ในซอร์สโค้ด

สร้าง HMAC จากนั้นวางค่า HMAC ที่คาดหวังลงในช่องเปรียบเทียบ เครื่องมือเปรียบเทียบสองค่าและรายงานว่าตรงกันหรือไม่ มีประโยชน์สำหรับตรวจสอบลายเซ็น webhook: คำนวณ HMAC ที่คาดหวังจาก payload ที่ได้รับและคีย์ของคุณ จากนั้นเปรียบเทียบกับลายเซ็นในเฮดเดอร์คำขอ การตรงกันยืนยันว่า webhook เป็นของแท้

ไม่เคย การสร้าง HMAC ทั้งหมดใช้ Web Crypto API (window.crypto.subtle.sign) ซึ่งทำงานทั้งหมดในเบราว์เซอร์ของคุณ คีย์ ข้อความ และผลลัพธ์ HMAC ของคุณไม่ถูกส่งไปยังเซิร์ฟเวอร์ใดๆ คุณสามารถตัดการเชื่อมต่ออินเทอร์เน็ตและเครื่องมือก็ยังทำงานได้เหมือนเดิม

HMAC คืออะไร?

HMAC ย่อมาจาก Hash-based Message Authentication Code รวมฟังก์ชันแฮชเข้ารหัส (เช่น SHA-256) กับคีย์ลับเพื่อสร้างลายเซ็นที่พิสูจน์ทั้งความสมบูรณ์และความถูกต้องของข้อความ ต่างจากแฮชธรรมดา HMAC รับประกันว่ามีเพียงคนที่รู้คีย์ลับเท่านั้นที่สามารถสร้างรหัสได้ นี่คือเหตุผลที่มันเป็นกระดูกสันหลังของการยืนยัน API การตรวจสอบ webhook และการเซ็น JWT

HMAC ในโลกจริง

ถ้าคุณเคยผสานกับ Stripe, GitHub หรือ AWS คุณเคยใช้ HMAC แล้ว Stripe เซ็น payload ของ webhook ด้วย HMAC-SHA256 เพื่อให้คุณตรวจสอบว่ามาจาก Stripe จริง AWS ใช้ HMAC-SHA256 ใน Signature Version 4 สำหรับเซ็นคำขอ API JWT ที่ใช้อัลกอริทึม HS256 คือ HMAC-SHA256 เครื่องมือนี้ให้คุณสร้างและตรวจสอบลายเซ็นเหล่านี้โดยไม่ต้องเขียนโค้ด

HMAC vs แฮชธรรมดา

แฮช SHA-256 ของ "hello" เหมือนกันเสมอไม่ว่าใครจะคำนวณ แต่ HMAC-SHA256 ของ "hello" ต่างกันสำหรับแต่ละคีย์ลับ ดังนั้นมันพิสูจน์ว่าข้อความไม่ถูกดัดแปลง และ ถูกสร้างโดยคนที่รู้คีย์ นี่คือความแตกต่างสำคัญ: แฮชให้ความสมบูรณ์ HMAC ให้ความสมบูรณ์บวกการยืนยันตัวตน

เลือกอัลกอริทึมที่ถูกต้อง

HMAC-SHA256 เป็นมาตรฐานอุตสาหกรรมและสิ่งที่คุณควรใช้เว้นแต่มีเหตุผลเฉพาะ HMAC-SHA384 และ HMAC-SHA512 สร้างผลลัพธ์ยาวกว่าสำหรับมาร์จิ้นความปลอดภัยที่สูงกว่า HMAC-SHA1 รองรับสำหรับความเข้ากันได้ย้อนหลังแต่ไม่ควรใช้ในการพัฒนาใหม่

ความปลอดภัยและความเป็นส่วนตัว

เครื่องมือนี้ทำงานทั้งหมดในเบราว์เซอร์โดยใช้ Web Crypto API การใช้งานเข้ารหัสเดียวกับที่จัดการ TLS คีย์ลับของคุณไม่เคยแตะเซิร์ฟเวอร์ ตรวจสอบได้โดยใช้เครื่องมือแบบออฟไลน์

ความปลอดภัยและความเป็นส่วนตัว

ความปลอดภัยของข้อมูลของคุณคือความสำคัญอันดับแรกของเรา

การประมวลผลภายใน

การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ

ไม่มีการถ่ายโอนข้อมูล

ข้อมูลของคุณจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเรา

ไม่มีการจัดเก็บข้อมูล

ไม่มีข้อมูลถูกเก็บหรือแบ่งปัน

การเข้ารหัส SSL

การเข้ารหัส SSL สำหรับการเชื่อมต่อที่ปลอดภัย

ขั้นตอนถัดไป

อีกมากมายใน MoreOnlineTools