Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

อัลกอริทึม MD5 ทำงานอย่างไร? ขั้นตอนการคำนวณ Message Digest

อัลกอริทึม MD5 (Message-Digest Algorithm 5) คำนวณ Message Digest ของข้อความผ่านขั้นตอนหลัก 5 ขั้นตอน ดังนี้:

ขั้นตอนที่ 1 - การเติม Padding Bits

ข้อความจะถูกเติมบิต (padding) จนความยาวรวมเป็นบิต congruent กับ 448 โมดולอ 512 (คือ ความยาว mod 512 = 448) การดำเนินการนี้ทำเสมอแม้ความยาวเดิมจะเป็น 448 mod 512 อยู่แล้ว เนื่องจาก 448 + 64 = 512 ข้อความจึงถูก padding จนความยาวน้อยกว่าจำนวนเท่าของ 512 อยู่ 64 บิต

ขั้นตอนที่ 2 - การเติมความยาว (Append Length)

เพิ่มคำอธิบาย 64 บิต ที่ระบุความยาวของข้อความต้นฉบับ M (ในหน่วยบิต ก่อน padding) เข้าไปในผลลัพธ์จากขั้นตอนที่ 1 หากความยาวเกิน 264 จะใช้เฉพาะ 64 บิตต่ำสุด (least significant) ของความยาว ผลรวมของขั้นตอนที่ 1 และ 2 จะได้ข้อความที่ความยาวเป็นจำนวนเท่าของ 512 บิตพอดี

ขั้นตอนที่ 3 - เริ่มต้น MD Buffer (Initialize MD Buffer)

ใช้บัฟเฟอร์ 128 บิต เพื่อเก็บผลลัพธ์ระหว่างทางและผลลัพธ์สุดท้าย บัฟเฟอร์ 4 วิร์ด (A, B, C, D) แต่ละตัวเป็นรีจิสเตอร์ 32 บิต ค่าเริ่มต้นในรูปฐานสิบหก (low-order bytes first):

  • Word A: 01 23 45 67
  • Word B: 89 ab cd ef
  • Word C: fe dc ba 98
  • Word D: 76 54 32 10

ขั้นตอนที่ 4 - ประมวลผลข้อความเป็นบล็อก 512 บิต (16 วิร์ด)

ฟังก์ชันการบีบอัด (compression function) ประกอบด้วย 4 รอบการประมวลผล แต่ละรอบรับบล็อก 512 บิตปัจจุบัน (Yq) และค่าบัฟเฟอร์ 128 บิต (ABCD) แล้วอัปเดตค่าบัฟเฟอร์ มีฟังก์ชันช่วย 4 ฟังก์ชัน แต่ละฟังก์ชันรับ 3 วิร์ด 32 บิต และสร้าง 1 วิร์ด 32 บิต:

F (X, Y, Z) = XY ∨ ¬X Z

G (X, Y, Z) = XZ ∨ Y ¬Z

H (X, Y, Z) = X ⊕ Y ⊕ Z

I (X, Y, Z) = Y ⊕ (X ∨ ¬Z)

ในแต่ละตำแหน่งบิต F ทำงานเป็นเงื่อนไข: ถ้า X แล้ว Y มิฉะนั้น Z ฟังก์ชัน F สามารถแทนด้วย + แทน ∨ ได้ เนื่องจาก XY และ ¬X(Z) จะไม่มี 1 ในตำแหน่งบิตเดียวกัน

ขั้นตอนที่ 5 - ผลลัพธ์ (Output)

Message Digest ที่ได้จะประกอบด้วย A, B, C, D ผลลัพธ์จากรอบสุดท้ายคือแฮช 128 บิต (Message Digest) ที่ได้หลังจากประมวลผลบล็อก 512 บิตทั้งหมด t บล็อกของข้อความ