MD5 algoritmining ishga tushirish vektorlari

|
MD5 algoritmining ishga tushirish vektorlari
|
bet | 3/18 | Sana | 12.02.2024 | Hajmi | 1,82 Mb. | | #155128 |
Bog'liq MD5
Endi biz M kiritishlarimizni biroz tushuntirib berdik, endi diagrammada 512-bitli xabar bloki M ostida ko'rsa-tilgan Initializatsiya vektorlariga e'tiborimizni qaratish vaqti keldi.
Dastlab, ishga tushirish vektorlari MD5 standartini tavsiflovchi RFCda ko'rsatilgan to'rtta alohida raqamdir. Bular:
A – 01234567
B - 89abcdef
C - fedcba98
D – 76543210
Algoritm bo'ylab harakat qilganimizda, bu raqamlar biz hisob-kitoblar orqali ishlab chiqaradigan turli natijalar bilan almashtiriladi. Biroq, ushbu to'rtta ishga tushirish vektori bizni boshlash uchun muhimdir. Ularning to'rttasi ham birinchi "16 ta amal..." to'rtburchaklariga kirishlardir.
MD5 F, G, H va I funksiyalari
“16 ta amal…” to‘rtburchakda birinchi qadam funksiya:
F(B, C, D) = (B∧C)∨(¬B∧D)
Chalkash tuyuladimi? Buni keyinroq chuqurroq tushuntiramiz. Shuni ta'kidlash kerakki, B, C va D initsializatsiya vektorlari bu funktsiyada kirish sifatida ishlatiladi.
Algoritmning oxirgi bosqichlarida B, C va D initsializatsiya vektorlari o'rnini bosuvchi qiymatlar ularning rolini to'ldiradi.
F(B, C, D) funksiyasi birinchi turning 16 ta amali uchun ishlatiladi. Keyingi turlarda uning o'rnini quyidagi funktsiyalar egallaydi:
2-tur: G(B, C, D) = (B∧D)∨(C∧¬D)
3-tur: H(B, C, D) =B⊕C⊕D
4-tur: I(B, C, D) = C⊕(B∨¬D)
Operatsiyalar
Ushbu diagrammada har bir "16 ta amal ..." to'rtburchakda nima sodir bo'lishi haqida taxminiy ko'rinish berilgan:
Har bir “16 ta amal…” to‘rtburchakni kattalashtirganimizda, B, C va D dan o‘qlar F bilan belgilangan qutiga ishora qilishini ko‘rishingiz mumkin. Bu F(B, C, D) funksiyasini ifodalaydi – boshqasida ham e’tibor bering. uch turda, F funktsiyasi mos ravishda G, H va I funktsiyalari bilan almashtiriladi.
Agar siz undan keyingi maydonga o'qni kuzatib boradigan bo'lsangiz, bu F(B, C, D) chiqishi A initsializatsiya vektoriga qo'shilganligini bildiradi , maxsus qo'shimcha turi bilan. Birinchi operatsiyada A initsializatsiya vektorining qiymati 01234567 ga teng, lekin keyingi operatsiyalarda u o'zgaradi.
Natija keyingi qutiga o'tadi, u erda Mi bilan ifodalangan kirish qismiga qo'shiladi. Shundan so'ng, bir xil maxsus turdagi qo'shimchalar yordamida natijaga K doimiysi qo'shiladi. K ning qiymatlari quyidagi formuladan olinadi:
Bu formula MD5 ning qolgan qismini tushunish uchun unchalik muhim emas. Biroq, bizga u olib keladigan qadriyatlar kerak, ular:
K1 - D76AA478
K2 - E8C7B756
K3 - 242070DB
K4 - C1BDCEEE
K5 - F57COFA
K6 - 4787C62A
K7 - A8304613
K8 - FD469501
K9 - 698098D8
K10 - 8B44F7AF
K11 - FFFF5BB1
K12 - 895 CD7BE
K13 - 6B901122
K14 - FD987193
K15 - A679438E
K16 - 49B40821
K17 - F61E2562
K18 - C040B340
K19 - 265E5A51
K20 - E9B6C7AA
K21 - D62F105D
K22 – 02441453
K23 - D8A1E681
K24 - E7D3FBC8
K25 - 21E1CDE6
K26 - C33707D6
K27 - F4D50D87
K28 - 455A14ED
K29 - A9E3E905
K30 - FCEFA3F8
K31 - 676F02D9
K32 - 8D2A4C8A
K33 - FFFA3942
K34 - 8771F681
K35 - 699D6122
K36 - FDE5380C
K37- A4BEEA44
K38 - 4BDECFA9
K39 - F6BB4B60
K40 - BEBFBC70
K41 - 289B7EC6
K42 - EAA127FA
K43 - D4EF3085
K44 - 04881D05
K45 - D9D4D039
K46 - E6DB99E5
K47 - 1FA27CF8
K48 - C4AC5665
K49 - F4292244
K50 - 432AFF97
K51 - AB9423A7
K52 - FC93A039
K53 - 655B59C3
K54 - 8F0CCC92
K55 - FFEFF47D
K56 - 85845DD1
K57 - 6FA87E4F
K58 - FE2CE6E0
K59 - A3014314
K60 - 4E0811A1
K61 - F7537E82
K62 - BD3AF235
K63 - 2AD7D2BB
K64 - EB86D391
Ushbu K qiymatlaridan biri 512 bitli blok uchun 64 ta amalning har birida ishlatiladi. Birinchi turda K1 dan K16 gacha, ikkinchi turda K17 dan K32 gacha, uchinchi turda K33 dan K48 gacha va to'rtinchi bosqichda K49 dan K64 gacha ishlatiladi.
K qiymati qo'shilgandan so'ng, keyingi qadam bitlar sonini oldindan belgilangan Si miqdoriga chapga siljitishdir. Bu qanday ishlashini biz maqolada batafsil aytib beramiz. Har bir bitni siljitadigan miqdor MD5 algoritmi qaysi operatsiyani bajarishiga qarab o'zgaradi. Har bir operatsiyada oldindan belgilangan siljishlar soni mavjud va operatsiyalar ularni ketma-ketlikda ishlatadi (masalan, S1, S2, S3 va boshqalar). S qiymatlari:
Birinchi tur
S1, S5, S9, S13 – 7
S2, S6, S10, S14 – 12
S3, S7, S11, S15 – 17
S4, S8, S12, S16, – 22
Ikkinchi tur
S17, S21, S25, S29 - 5
S18, S22, S26, S30 - 9
S19, S23, S27, S31 - 14
S20, S24, S28, S32 - 20
Uchinchi tur
S33, S37, S41, S45 - 4
S34, S38, S42, S46 - 11
S35, S39, S43, S47 - 16
S36, S40, S44, S48 - 13
To'rtinchi tur
S49, S53, S57, S61 - 6
S50, S54, S58, S62 - 10
S51, S55, S59, S63 - 15
S52, S56, S60, S64 - 21
O'zgartirish amalga oshirilgandan so'ng, barcha hisob-kitoblarning natijasi B vektorini ishga tushirish qiymatiga qo'shiladi. Dastlab, u 89abcdef, lekin keyingi operatsiyalarda o'zgaradi.
Bu qiymatning chiqishi keyingi operatsiyada B uchun ishga tushirish vektoriga aylanadi. B, C va D initsializatsiya vektorlari bitta bo'shliq ustida o'ngga aralashtiriladi, shuning uchun keyingi operatsiyada B C, C D va D A bo'ladi.
|
| |