спосіб. Зараз паролі зберігаються в зашифрованому вигляді (за допомогою MD5). Після того, як користувач введе свій пароль, від пароля обчислюється хеш-функція MD5. Результат порівнюється зі значенням, що зберігається в базі. Якщо значення рівні, то пароль вірний. Ще MD5 можна використовувати в якості контрольної суми. Припустимо, необхідно кудись скопіювати файл. Причому немає ніяких гарантій, що файл буде доставлений без пошкоджень. Перед відправкою можна порахувати MD5 від вмісту файлу і передати результат разом з файлом. Потім порахувати MD5 від прийнятого файлу і порівняти два результату. Якщо результати різні, то це означає, що файл або результат був зіпсований при передачі. Останнім часом MD5 стали використовувати інтернет-казино. Перед тим, як зробити ставку, гравець отримує хеш від результату гри. Коли ставка зроблена, гравець отримує результат гри (наприклад, випало число 26). Порахувавши від результату хеш-функцію, можна переконатися, що казино згенерувало це число до того, як гравець зробив ставку. Але не варто думати, що виграти в цьому казино дуже просто. Весь секрет у тому що, ймовірність виграшу підібрана таким чином, що гравець майже завжди буде в програші. p align="justify"> Як працює MD5? Тепер подивимося, як саме працює MD5. Для обробки MD5 отримує деяку рядок. Цей рядок перетвориться в послідовність з нулів та одиниць. Як це робиться? У кожного символу є свій номер. Ці номери можна записати у двійковій системі числення. Виходить, кожен символ можна записати як послідовність нулів і одиниць. Якщо цим скористатися, отримаємо з рядка послідовність з нулів та одиниць. Нехай q буде довжина получившейся послідовності (рівно 64 біта, можливо, з незначущими нулями). До вийшла послідовності приписується 1. У результаті довжина послідовності збільшується на 1. Потім до послідовності приписуються нулі, поки довжина не стане за модулем 512 дорівнює 448 (length mod 512 = 448). Далі до послідовності дописуються молодші 32 біта числа q, а потім - старші. Довжина послідовності стає кратною 512. Отриману послідовність назвемо S. Для підрахунку результату використовуються чотири подвійних слова (32 біта). Ці подвійні слова инициализируются наступними шестнадцатерічнимі значеннями, де першим слід наймолодший байт:
A: 23 січня 45 67: 89 ab cd ef: fe dc ba 98: 76 54 32 10
Також для підрахунку результату використовуються наступні функції:
F (X, Y, Z) = XY v not (X) Z (X, Y, Z) = XZ v Y not (Z) (X, Y, Z) = X xor Y xor Z (X, Y, Z) = Y xor (X v not (Z))
X, Y, Z - це подвійні слова. Результати функцій, також подвійні слова. Для підрахунку використовується ще одна функція (назвемо її W). Вона хитро обробляє дані і повертає результат (детально її описувати не буду, тому вона виконує серію простих перетворень). Обробка даних відбувається з використанням функцій F, G, H, I.
На малюнку схематично ...