bitdan katta kirishlar - They are deterministic

|
They are deterministic
|
bet | 2/18 | Sana | 12.02.2024 | Hajmi | 1,82 Mb. | | #155128 |
Bog'liq MD5
Dastlabki kirish uzunligi 448 bitdan katta bo'lsa, u bir nechta 512 bitli bloklarga bo'linadi. Har bir blok butun kirish bloklarga bo'linmaguncha 512 bit kirish ma'lumotlarini o'z ichiga oladi. Yakuniy blok kamida 1 bit to'ldirishni va ikkilik formatdagi 64 bit uzunlikni o'z ichiga olishi kerak.
Qolgan kirish ma'lumotlari to'liq 448 bit uzunlikda bo'lsa, to'ldirish uchun butun qo'shimcha blok qo'shilishi kerak bo'ladi . Ikkinchi-oxirgi blok yakuniy 448 bit ma'lumotlarni, so'ngra bittani, keyin esa blokni to'ldirish uchun 63 nolni o'z ichiga oladi. Yakuniy blok 448 nolni (jami 512 bit to'ldirishni tashkil etadi), keyin ikkilik formatda 64 bitli xabar uzunligini o'z ichiga oladi.
Agar kirish ma'lumotlarining 449 biti qolgan bo'lsa, qo'shimcha blok qo'shilishi kerak edi. Ikkinchi oxirgi blok qolgan kirish ma'lumotlarining 449 bitini, undan keyin blokni to'ldirish uchun bitta va 62 nolni o'z ichiga oladi. Yakuniy blokda 448 ta nol, keyin esa 64 bitli xabar uzunligi bo'ladi.
Aksincha, agar qolgan ma'lumotlar atigi 447 bit uzunlikda bo'lsa, yakuniy blok oxirgi 447 bit kirish ma'lumotlarini o'z ichiga oladi, keyin esa bitta to'ldirish sifatida, nolsiz. 64-bitli xabar uzunligi jami 512 bitga yetkazish uchun oxirida qo'shiladi.
Bu ikki holat o'rtasidagi farq g'alati tuyulishi mumkin, ammo u kirishni kamida bitta raqam bilan to'ldirishga imkon beradi, shu bilan birga 64 bitli xabar uzunligi uchun joy qoldiradi.
Asosiy MD5 algoritmi
Kirish M matn
Yuqori qismida bizda 512 bitli xabar bloki, M deyilgan kirishimiz bor . Diagrammaning ushbu bosqichida u oxirgi bosqichda biz qo'shgan barcha to'ldirishni o'z ichiga oladi. Agar siz pastga o'qni kuzatib boradigan bo'lsangiz, u to'rtta "...ning 16 ta amali" to'rtburchakning har biriga kirishini ko'rasiz. Ushbu to'rtta to'rtburchakning har biri dumaloq deb ataladi va ularning har biri o'n oltita operatsiyadan iborat.
Bu shuni anglatadiki , bizning kiritishimiz M ushbu to'rt bosqichning har birida kirishdir . Biroq, uni kiritish sifatida ishlatishdan oldin, bizning 512 bitli M o'n oltita 32 bitli "so'z" ga bo'linishi kerak. Ushbu so'zlarning har biriga M0 dan M15 gacha bo'lgan o'z raqami beriladi. Bizning misolimizda bu 16 ta so'z:
M 0 – 01010100 01101000 01100101 01111001
M 1 – 00100000 01100001 01110010 01100101
M 2 – 00100000 01100100 01100101 01110100
M 3 – 01100101 01110010 01101101 01101001
M 4 – 01101110 01101001 01110011 01110100
M 5 – 01101001 01100011 10000000 00000000
M 6 – 00000000 00000000 00000000 00000000
M 7 – 00000000 00000000 00000000 00000000
M 8 – 00000000 00000000 00000000 00000000
M 9 – 00000000 00000000 00000000 00000000
M 10 – 00000000 00000000 00000000 00000000
M 11 – 00000000 00000000 00000000 00000000
M 12 – 00000000 00000000 00000000 00000000
M 13 – 00000000 00000000 00000000 00000000
M 14 – 00000000 00000000 00000000 00000000
M 15 – 00000000 00000000 00000000 10110000
Bizning ikkilik raqamlarimizga o'n oltilik ekvivalentlar:
M 0 – 54686579
M 1 – 20617265
M 2 – 20646574
M 3 – 65726D69
M 4 – 6E697374
M 5 – 69638000
M 6 – 00000000
M 7 – 00000000
M 8 – 00000000
M 9 – 00000000
M 10 – 00000000
M 11 – 00000000
M 12 – 00000000
M 13 – 00000000
M 14 – 00000000
M 15 – 000000B0
Ushbu o'n oltita qiymatning har biri har bir "16 amal ..." to'rtburchaklar bilan ifodalangan murakkab operatsiyalar to'plamiga kirish vazifasini bajaradi. Yana bir bor, ushbu to'rtta "16 operatsiya ..." to'rtburchaklar to'rt xil turni ifodalaydi, yuqoridagi biri birinchi turni, eng pasti esa to'rtinchi turni ifodalaydi . Ushbu M kirishlarning har biri har bir turda ishlatilsa-da, ular turli tartibda qo'shiladi.
Birinchi bosqichda M kirishlar algoritmga ketma-ket qo'shiladi, masalan, M0, M1, M2... M15.
Ikkinchi bosqichda M kirishlar quyidagi tartibda qo'shiladi:
M1, M6, M11, M0, M5, M10, M15, M4, M9, M14, M3, M8, M13, M2, M7, M12
Uchinchi bosqichda M kirishlar quyidagi ketma-ketlikda qo'shiladi:
M5, M8, M11, M14, M1, M4, M7, M10, M13, M0, M3, M6, M9, M12, M15, M2
To'rtinchi bosqichda M kirishlari quyidagi tartibda qo'shiladi:
M0, M7, M14, M5, M12, M3, M10, M1, M8, M15, M6, M13, M4, M11, M2, M9
Agar dastlabki kirish va uning to'ldirilishi bitta 512 bitli blokdan katta bo'lsa, raqamlash sxemasi qayta tiklanadi. Ma'lumotlarning birinchi blokiga ishlov berilgandan so'ng, ikkinchi blokning kirishlari ham M0 dan M15 gacha etiketlanadi.
Oddiylik uchun bizning misolimiz 22 so'zni o'z ichiga olgan bitta 512 bitli ma'lumotlar blokiga yopishadi.
|
| |