dev/generator
สร้างรหัสยืนยันข้อความ HMAC - ฟรี ใช้งานได้ทันที | Smocky
ข้อมูลไม่ออกจากเบราว์เซอร์
ข้อความ, Hex หรือ Base64 ขนาดสูงสุด 65,536 หน่วยรหัส UTF-16 หากเกินขนาดจะแจ้งข้อผิดพลาดโดยไม่ตัดข้อมูล
ข้อความ, Hex หรือ Base64 ขนาดสูงสุด 65,536 หน่วยรหัส UTF-16 หากเกินขนาดจะแจ้งข้อผิดพลาดโดยไม่ตัดข้อมูล
กรอกข้อความและกุญแจลับ แล้วกดสร้างเพื่อคำนวณรหัสยืนยันข้อความ HMAC
HMAC คืออะไร
HMAC (Hash-based Message Authentication Code) ใช้ข้อความร่วมกับกุญแจลับเพื่อสร้างรหัสยืนยันข้อความ ผู้รับที่มีกุญแจเดียวกันสามารถคำนวณรหัสซ้ำเพื่อตรวจว่าข้อความถูกเปลี่ยนหรือไม่
HMAC ต้องใช้กุญแจลับ ต่างจากแฮชทั่วไป และไม่ได้เข้ารหัสหรือซ่อนเนื้อหา สำหรับการลงนามคำขอ API ทั้งสองฝ่ายต้องใช้อัลกอริทึม ไบต์ของกุญแจ และไบต์ข้อความเหมือนกันทุกประการ รวมช่องว่างและอักขระขึ้นบรรทัดใหม่
ตัวอย่างผู้ส่งและผู้รับ
ผู้ส่ง: ใช้กุญแจร่วมสมมติ example-shared-secret-only ผู้ส่งคำนวณรหัส HMAC จากข้อความ แล้วส่งข้อความพร้อมรหัสโดยไม่ส่งกุญแจลับ
ผู้รับ: ผู้รับใช้กุญแจสมมติเดียวกันคำนวณรหัสจากข้อความที่ได้รับ แล้วเปรียบเทียบทั้งสองรหัส หากตรงกัน แสดงว่าข้อความตรงกับที่ผู้มีกุญแจร่วมส่งมา หากไม่ตรงกัน ข้อความหรือกุญแจอาจต่างกัน
เครื่องมือนี้สร้างรหัสจากไบต์ที่คุณกรอกเท่านั้น ไม่ส่งหรือยืนยันคำขอ API การป้องกันส่งคำขอซ้ำและการจัดรูปแบบคำขอเป็นหน้าที่ของโปรโตคอล API
คำถามที่พบบ่อย
รหัส HMAC ต่างจากค่าแฮชทั่วไปอย่างไร
ค่าแฮชไม่ใช้กุญแจ ทุกคนคำนวณได้จากข้อความอย่างเดียว จึงไม่พิสูจน์ว่าใครสร้าง ส่วน HMAC ต้องใช้กุญแจลับ ผู้ที่มีกุญแจจึงสร้างหรือยืนยันรหัสที่ตรงกันได้ ใช้ยืนยันข้อความแทนการตรวจค่าแฮชอย่างเดียว
HMAC เข้ารหัสข้อความหรือเหมือนลายเซ็นดิจิทัลหรือไม่
ไม่ใช่ทั้งสองอย่าง HMAC ไม่เข้ารหัสหรือซ่อนข้อความ ผลเป็นรหัสขนาดคงที่ที่ใช้คู่กับข้อความ ไม่ใช่ ciphertext และไม่ใช่ลายเซ็นแบบกุญแจสาธารณะ HMAC ใช้กุญแจลับร่วมหนึ่งกุญแจ ส่วนลายเซ็นดิจิทัลใช้กุญแจส่วนตัวลงนามและกุญแจสาธารณะตรวจสอบเพื่อพิสูจน์ผู้สร้างแก่บุคคลที่สาม HMAC ตรวจได้เฉพาะผู้ที่มีกุญแจร่วม
ทำไมเปลี่ยนเฉพาะรูปแบบข้อมูลแล้วรหัสเปลี่ยน
HMAC คำนวณจากไบต์จริง Text, Hex และ Base64 อธิบายไบต์คนละวิธี กุญแจ Hex 6162 กับ Base64 YWI= ถอดเป็นสองไบต์เดียวกันจึงให้รหัสเดียวกัน แต่ Text 6162 เป็นสี่ไบต์จึงให้รหัสต่างกัน การเพิ่มช่องว่างหรือบรรทัดใหม่ในข้อความก็เปลี่ยนไบต์และรหัส
สร้างรหัสจากข้อความว่างได้หรือไม่
ได้ ข้อความว่าง รวม Hex หรือ Base64 ที่ถอดเป็นศูนย์ไบต์ ใช้ได้และให้รหัสที่แน่นอน แต่กุญแจลับที่ถอดเป็นศูนย์ไบต์จะถูกปฏิเสธ เพราะขัดกับจุดประสงค์ของการใช้กุญแจ
ใช้ลงนามและส่งคำขอ API ได้หรือไม่
ไม่ได้ เครื่องมือนี้คำนวณรหัสจากไบต์ที่กรอก ไม่สร้าง ส่งหรือยืนยันคำขอ HTTP การป้องกันคำขอซ้ำด้วย timestamp หรือ nonce และการกำหนดไบต์ที่จะลงนามเป็นหน้าที่โปรโตคอล API ต้องทำให้ตรงกันก่อนเทียบรหัส
ควรใช้ HMAC-MD5 หรือ HMAC-SHA-1 หรือไม่
ใช้เฉพาะเมื่อต้องเข้ากับระบบเดิมที่กำหนดไว้ เช่น webhook เก่า ต่างจาก MD5 หรือ SHA-1 ที่ไม่ใช้กุญแจ ยังไม่มีการโจมตีที่ใช้ได้จริงที่รู้จักสำหรับกู้กุญแจหรือปลอมรหัส HMAC-MD5/HMAC-SHA-1 โดยไม่มีกุญแจ แต่เมื่อควบคุมทั้งสองฝั่งควรเลือก HMAC-SHA-256 หรืออัลกอริทึมที่แข็งแรงกว่า