c, d, a, M1, 21, 0x85845ddl) (a, b, c, d, M8, 6, 0x6fa87e4f) (d, a , b, c, M15, 10, 0xfe2ce6e0) (c, d, a, b, M6, 15, 0xa3014314) (b, c, d, a, M13, 21, 0x4e081lal) (a, b, c, d, M4, 6, 0xf7537e82) (d, a, b, c, M11, 10, 0xbd3af235) (c, d, a, b, M2, 15, 0x2ad7d2bb) (b, c, d, a, M9, 21, 0xeb86d391 )
Ці константи, ti, вибиралися таким чином:
На i-му етапі ti є цілою частиною 232 * abs (sin (i)), де i вимірюється в радіанах.
Після всього цього a, b, c і d додаються до A, B, C і D, відповідно, і алгоритм продовжується для наступного блоку даних. Остаточним результатом служить об'єднання A, B, C і D.
1.4 Безпека MD5
Рон Ривест привів наступні поліпшення MD5 у порівнянні з MD4:
Додався четвертий етап.
Тепер в кожній дії використовується унікальна прибавляемая константа.
Функція G на етапі 2 с ((X Г™ Y) Гљ (X Г™ Z ) Гљ (Y Г™ Z)) була змінена на (X Г™ Z) Гљ (Y Г™ ( Г? Z)), щоб зробити G менш симетричною.
Тепер кожна дія додається до результату попереднього етапу. Це забезпечує більш швидкий лавинний ефект.
Змінився порядок, в якому використовувалися підблоки повідомлення на етапах 2 і 3, щоб зробити шаблони менш схожими.
Значення циклічного зсуву вліво на кожному етапі були наближено оптимізовані для прискорення лавинного ефекту.
Чотири зсуву, використовувані на кожному етапі, відрізняються від значень, які використовуються на інших етапах.
Том Берсон (Tom Berson) спробував застосувати диференціальний криптоаналіз до одного етапу MD5, але його розтин не виявилося ефективним для жодного з чотирьох етапів. Більш успішне розтин ден Боєра і Босселаерса, що використовує функцію стиснення, привело до виявлення зіткнень в MD5 Саме по собі це розтин неможливо для розтину MD5 в практичних додатках, воно не впливає і на використання MD5 в алгоритмах шифрування, подібних Luby-Rackoff. p align="justify"> Успіх цього розтину означає тільки, що одна з основних цілей проектування MD5-створити стійку до зіткнень функцію стиснення не була дося...