เอ็มดี5 (อังกฤษ: Message-Digest algorithm 5: MD5) เป็นฟังก์ชันแฮชในวิทยาการเข้ารหัสลับ เช่นการเก็บรหัสผ่าน และนอกจากนี้ยังมีการนำมาใช้ในการตรวจสอบความสมบูรณ์ของไฟล์ (Md5sum) แต่ถึงกระนั้นก็มีการพบว่า MD5 นั้นไม่เป็นแฮชฟังก์ชันที่ป้องกันการทับซ้อน (collision resistant) จึงไม่เหมาะสมที่จะนำมาใช้ในแอปพลิเคชันบางอย่างเช่น SSL หรือ Digital Signature
ขั้นตอนวิธี
เราจะเริ่มจากการสมมติให้มีอินพุทเป็นข้อความ M ขนาด b-bit ซึ่ง b เป็นจำนวนเต็มที่ไม่ติดลบ ไม่จำเป็นต้องหาร 8 ลงตัว และมีความยาวได้ไม่จำกัด ซึ่งจะเขียนใหม่ได้เป็น m_0 m_1 m_2 … m_b-1 จากนั้นจะทำการหา MD5 โดยการผ่านขั้นตอนต่อไปนี้
เติมบิตท้าย
เติม “ 10 ” ท้ายข้อความแล้ว เติม “ 0 ” ไปเรื่อยๆ จนกว่าข้อความจะมีขนาดที่คอนกลูเอนกับ 448 (mod 512)
เติมขนาดข้อความ
เติมขนาดของข้อความความยาว 64 บิต ท้ายข้อความ หากขนาดของข้อความใหญ่เกินที่ 64 บิตจะเก็บได้ก็ให้ใช้ 64 บิตหลังของขนาดเท่านั้น สุดท้ายจะได้ข้อความที่แต่งเติมแล้วมีขนาดที่สามารถหาร 512 ลงตัวพอดี นั่นคือจะสามารถแบ่งข้อความได้เป็นชุด ชุดละ 512 บิต หรือ 32 ไบต์ หรือ 16-word block
กำหนดค่าเริ่มต้นของ MD Buffer
ตั้งค่าเริ่มต้นของ buffer ขนาด 32 บิต 4 ตัวดังนี้
A = 0x67452301 , B = 0xEFCDAB89 , C =0x98BADCFE , D = 0x76543210
คำนวณข้อความใน 16-word block
ลำดับแรกเราจะกำหนดฟังก์ชันรับอินพุท 32 บิต และเอาต์พุต 32 บิต ดังนี้
แทนการดำเนินการ XOR, AND, OR และ NOT ในขั้นตอนนี้ยังต้องใช้ ตารางขนาด 64 ช่อง T[1…64] ซึ่ง T[i] สามารถหาค่าได้จาก ⌊ 2^32 x |sin i | ⌋ โดย i มีค่าเป็นเรเดียน จากนั้นทำตามขั้นตอนวิธีดังนี้
//ดำเนินการทุก 16-word block For i = 0 to N/16-1 do //คัดลอก block ที่ i เก็บไว้ที่ X For j = 0 to 15 do Set X[j] to M[i*16+j]. end /* of loop on j */
// เก็บ A ใน AA, B ใน BB, C ใน CC, และ D ใน DD AA = A BB = B CC = C DD = D
// รอบที่ 1 /* ให้ [abcd k s i] แทน a = b + ((a + F (b,c,d) + X[k] + T[i]) <<< s) สัญลักษณ์ <<< แทน left rotate */ // ดำเนินการ 16 ครั้งดังนี้ [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
// รอบที่ 2 /* ให้ [abcd k s i] แทน a = b + ((a + G (b,c,d) + X[k] + T[i]) <<< s) */ // ดำเนินการ 16 ครั้งดังนี้ [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
// รอบที่ 3 /* ให้ [abcd k s i] แทน a = b + ((a + H (b,c,d) + X[k] + T[i]) <<< s) */ // ดำเนินการ 16 ครั้งดังนี้ [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
// รอบที่ 4 /* ให้ [abcd k s i] แทน a = b + ((a + I (b,c,d) + X[k] + T[i]) <<< s) */ // ดำเนินการ 16 ครั้งดังนี้. [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
//นำค่าที่ได้กลับไปบวกกับค่าเดิม A = A + AA B = B + BB C = C + CC D = D + DD end // ของวงวน i
แสดงเอาต์พุต
ค่ารหัสที่ได้จะเก็บอยู่ในสมารถแสดงได้โดยนำเลขฐาน 16 ของ A, B, C, D มาต่อกัน
อ้างอิง
- วรเศรษฐ์ สุวรรณิก (2553). วิทยาการรหัสลับ Cryptography. กรุงเทพฯ: วรรณิก. pp. 123–139. ISBN .
แหล่งข้อมูลอื่น
- RFC 1321 The MD5 Message-Digest Algorithm
- W3C recommendation on MD5
- REXX MD5 test suite covers MD5 examples in various RFCs (incl. (errata))
- Source Code for Cryptography 2011-07-28 ที่ เวย์แบ็กแมชชีน (Just a touch)
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
exmdi5 xngkvs Message Digest algorithm 5 MD5 epnfngkchnaehchinwithyakarekharhslb echnkarekbrhsphan aelanxkcakniyngmikarnamaichinkartrwcsxbkhwamsmburnkhxngifl Md5sum aetthungkrannkmikarphbwa MD5 nnimepnaehchfngkchnthipxngknkarthbsxn collision resistant cungimehmaasmthicanamaichinaexpphliekhchnbangxyangechn SSL hrux Digital Signaturekhntxnwithieracaerimcakkarsmmtiihmixinphuthepnkhxkhwam M khnad b bit sung b epncanwnetmthiimtidlb imcaepntxnghar 8 lngtw aelamikhwamyawidimcakd sungcaekhiynihmidepn m 0 m 1 m 2 m b 1 caknncathakarha MD5 odykarphankhntxntxipni etimbitthay etim 10 thaykhxkhwamaelw etim 0 iperuxy cnkwakhxkhwamcamikhnadthikhxnkluexnkb 448 mod 512 etimkhnadkhxkhwam etimkhnadkhxngkhxkhwamkhwamyaw 64 bit thaykhxkhwam hakkhnadkhxngkhxkhwamihyekinthi 64 bitcaekbidkihich 64 bithlngkhxngkhnadethann sudthaycaidkhxkhwamthiaetngetimaelwmikhnadthisamarthhar 512 lngtwphxdi nnkhuxcasamarthaebngkhxkhwamidepnchud chudla 512 bit hrux 32 ibt hrux 16 word block kahndkhaerimtnkhxng MD Buffer tngkhaerimtnkhxng buffer khnad 32 bit 4 twdngni A 0x67452301 B 0xEFCDAB89 C 0x98BADCFE D 0x76543210 khanwnkhxkhwamin 16 word block ladbaerkeracakahndfngkchnrbxinphuth 32 bit aelaexatphut 32 bit dngni F X Y Z X Y X Z displaystyle F X Y Z X wedge Y vee neg X wedge Z G X Y Z X Z Y Z displaystyle G X Y Z X wedge Z vee Y wedge neg Z H X Y Z X Y Z displaystyle H X Y Z X oplus Y oplus Z I X Y Z Y X Z displaystyle I X Y Z Y oplus X vee neg Z displaystyle oplus wedge vee neg aethnkardaeninkar XOR AND OR aela NOT inkhntxnniyngtxngich tarangkhnad 64 chxng T 1 64 sung T i samarthhakhaidcak 2 32 x sin i ody i mikhaepnerediyn caknnthatamkhntxnwithidngni daeninkarthuk 16 word block For i 0 to N 16 1 do khdlxk block thi i ekbiwthi X For j 0 to 15 do Set X j to M i 16 j end of loop on j ekb A in AA B in BB C in CC aela D in DD AA A BB B CC C DD D rxbthi 1 ih abcd k s i aethn a b a F b c d X k T i lt lt lt s sylksn lt lt lt aethn left rotate daeninkar 16 khrngdngni ABCD 0 7 1 DABC 1 12 2 CDAB 2 17 3 BCDA 3 22 4 ABCD 4 7 5 DABC 5 12 6 CDAB 6 17 7 BCDA 7 22 8 ABCD 8 7 9 DABC 9 12 10 CDAB 10 17 11 BCDA 11 22 12 ABCD 12 7 13 DABC 13 12 14 CDAB 14 17 15 BCDA 15 22 16 rxbthi 2 ih abcd k s i aethn a b a G b c d X k T i lt lt lt s daeninkar 16 khrngdngni ABCD 1 5 17 DABC 6 9 18 CDAB 11 14 19 BCDA 0 20 20 ABCD 5 5 21 DABC 10 9 22 CDAB 15 14 23 BCDA 4 20 24 ABCD 9 5 25 DABC 14 9 26 CDAB 3 14 27 BCDA 8 20 28 ABCD 13 5 29 DABC 2 9 30 CDAB 7 14 31 BCDA 12 20 32 rxbthi 3 ih abcd k s i aethn a b a H b c d X k T i lt lt lt s daeninkar 16 khrngdngni ABCD 5 4 33 DABC 8 11 34 CDAB 11 16 35 BCDA 14 23 36 ABCD 1 4 37 DABC 4 11 38 CDAB 7 16 39 BCDA 10 23 40 ABCD 13 4 41 DABC 0 11 42 CDAB 3 16 43 BCDA 6 23 44 ABCD 9 4 45 DABC 12 11 46 CDAB 15 16 47 BCDA 2 23 48 rxbthi 4 ih abcd k s i aethn a b a I b c d X k T i lt lt lt s daeninkar 16 khrngdngni ABCD 0 6 49 DABC 7 10 50 CDAB 14 15 51 BCDA 5 21 52 ABCD 12 6 53 DABC 3 10 54 CDAB 10 15 55 BCDA 1 21 56 ABCD 8 6 57 DABC 15 10 58 CDAB 6 15 59 BCDA 13 21 60 ABCD 4 6 61 DABC 11 10 62 CDAB 2 15 63 BCDA 9 21 64 nakhathiidklbipbwkkbkhaedim A A AA B B BB C C CC D D DD end khxngwngwn i aesdngexatphut kharhsthiidcaekbxyuinsmarthaesdngidodynaelkhthan 16 khxng A B C D matxknxangxingwresrsth suwrrnik 2553 withyakarrhslb Cryptography krungethph wrrnik pp 123 139 ISBN 978 616 90224 2 8 aehlngkhxmulxunRFC 1321 The MD5 Message Digest Algorithm W3C recommendation on MD5REXX MD5 test suite covers MD5 examples in various RFCs incl errata Source Code for Cryptography 2011 07 28 thi ewyaebkaemchchin Just a touch