การรับรองความถูกต้องของข้อความโดยใช้ฟังก์ชันแฮชเข้ารหัสใน python สามารถทำได้ผ่านกลไก HMAC เราสามารถใช้ HMAC กับฟังก์ชันแฮชที่ทำซ้ำได้หลายแบบ เช่น MD5, SHA-1 ร่วมกับคีย์ที่ใช้ร่วมกันที่เป็นความลับ
แนวคิดพื้นฐานคือการรักษาความปลอดภัยข้อมูลของเรา โดยการสร้างแฮชเข้ารหัสของข้อมูลจริงรวมกับคีย์ลับที่ใช้ร่วมกัน ผลลัพธ์สุดท้ายถูกส่งโดยไม่มีรหัสลับ แต่แฮชที่ได้นั้นสามารถใช้เพื่อตรวจสอบข้อความที่ส่งหรือเก็บไว้ได้
ไวยากรณ์
hmac.new(key, msg = None, digestmod = None)
ส่งคืนวัตถุ hmac ที่สร้างใหม่
ที่ไหน −
-
คีย์ – คีย์ลับที่ใช้ร่วมกันที่นี่
-
Msg – ข้อความที่จะแฮชที่นี่ ข้อความที่จะแฮชที่นี่
-
Digestmod – ชื่อหรือโมดูลไดเจสต์สำหรับอ็อบเจ็กต์ HMAC ที่จะใช้
วิธีการและคุณสมบัติของโมดูล HMAC -
-
hmac.update(ข้อความ)
ใช้เพื่ออัปเดตวัตถุ hmac โดยใช้ข้อความที่กำหนด ข้อความจะถูกต่อท้ายหากคุณเรียกใช้วิธีนี้มากกว่าหนึ่งครั้ง
-
hmac.digest()
ส่งคืนไดเจสต์ของไบต์ที่ส่งผ่านไปยังเมธอด update() จนถึงตอนนี้
-
hashlib.hexdigest()
เช่นเดียวกับไดเจสต์() ยกเว้นไดเจสต์ถูกส่งกลับเป็นสตริงสองเท่าของความยาวที่มีเฉพาะเลขฐานสิบหก อาจใช้เพื่อแลกเปลี่ยนค่าอย่างปลอดภัยในอีเมลหรือสภาพแวดล้อมที่ไม่ใช่ไบนารีอื่นๆ
-
haslib.copy()
ส่งคืนสำเนา (“โคลน”) ของวัตถุ hmac
ตัวอย่าง1
การสร้างแฮชโดยใช้อัลกอริทึมแฮช MD5 เริ่มต้น
#Import libraries import hashlib import hmac #data update_bytes = b'Lorem ipsum dolor sit amet, consectetur adipiscing elit. \ Suspendisse tristique condimentum viverra. Nulla accumsan \ orci risus, non congue lacus feugiat id.' #secret key password = b'402xy5#' #Generate cryptographic hash using md5 my_hmac = hmac.new(update_bytes, password, hashlib.md5) print("The first digest: " + str(my_hmac.digest())) print("The Canonical Name: " + my_hmac.name) print("Block size: " + str (my_hmac.block_size) + "bytes") print("Digest size: " + str(my_hmac.digest_size) + "bytes") #Create a copy of the hmac object my_hmac_cpy = my_hmac.copy() print("The Copied digest: " + str(my_hmac_cpy.digest()))
ผลลัพธ์
The first digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8' The Canonical Name: hmac-md5 Block size: 64bytes Digest size: 16bytes The Copied digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8'
เนื่องจาก SHA1 ถือว่ามีความปลอดภัยมากกว่าอัลกอริธึม MD5 และหากคุณกำลังคิดที่จะรันโปรแกรมข้างต้นโดยใช้อัลกอริธึม SHA1 เพียงแก้ไขชื่ออัลกอริทึมในบรรทัดนี้
my_hmac =hmac.new (update_bytes, รหัสผ่าน, hashlib.sha1)
และผลลัพธ์ของเราจะเป็นดังนี้:
ไดเจสต์แรก:b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
The Canonical Name: hmac-sha1 Block size: 64bytes Digest size: 20bytes The Copied digest: b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
แอพพลิเคชั่น
กลไกการพิสูจน์ตัวตน HMAC สามารถใช้ได้ในทุกที่ที่การรักษาความปลอดภัยมีความสำคัญ เช่น บริการเครือข่ายสาธารณะ ตัวอย่างเช่น ในเครือข่ายสาธารณะ เรากำลังส่งไฟล์/ข้อมูลสำคัญผ่านไพพ์หรือซ็อกเก็ต ไฟล์/ข้อมูลนั้นควรลงนาม จากนั้นจึงควรทดสอบลายเซ็นก่อนใช้ข้อมูล