Введення
В даний час з хешем ми стикаємося практично на кожному кроці: при роботі з веб браузером, різними компіляторами, текстовими редакторами та перекладачами, базами даних тощо
Під хешем звичайно розуміють процес перетворення вхідного масиву даних довільної довжини в вихідну бітову рядок фіксованої довжини.
Такі перетворення також називаються хеш-функціями або функціями згортки, а їх результати називають хешем <# "justify"> Глава 1. Опис алгоритму MD5
1.1 Історія MD5
MD5 - один із серії алгоритмів з побудови дайджесту повідомлення <# "center"> хешування delphi calc інтерфейс
1.2 Односпрямовані хеш-функції
Односпрямована функція H (M) застосовується до повідомлення довільної довжини M і повертає значення фіксованої довжини h.
h = H (M)
де h має довжину m
Багато функції дозволяють обчислювати значення фіксованої довжини за вхідними даними довільної довжини, але у однонапрямлених хеш-функцій є додаткові властивості, що роблять їх однонаправленими.
Знаючи М, легко обчислити h.
Знаючи Н, важко визначити М, для якого H (M) = h.
Знаючи М, важко визначити інше повідомлення M , для якого
H (M) = Н (М )
Нелегко побудувати функцію, вхід якої має довільний розмір, а тим більше зробити її односпрямованої. У реальному світі односпрямовані хеш-функції будуються на ідеї функція стиснення. Така односпрямований функція видає хеш-значення довжини n при заданих вхідних даних більшої довжини m. Входами функції стиснення є блок повідомлення і вихід попереднього блоку тексту. Вихід являє собою хеш-значення всіх блоків до цього моменту. Тобто, хеш-значення блоку Мi одно
= f (Mi, hi-1)
В
Це хеш-значення разом з наступним блоком повідомлення стає наступним входом функції стиснення. Хеш-значенням всього повідомлення є хеш-значення останнього блоку. p align="justify"> Хешіруемий вхід повинен якимось способом містити бінарне представлення довжини всього повідомлення. Таким чином долається потенційна проблема, викликана тим, що повідомлення різної довжини можуть давати одне і те ж хеш-значення. Іноді такий метод називається MD-підсиленням. br/>
1.3 Опис алгоритму
Існує безліч алгоритмів хешування з різними характеристиками (розрядність <# "justify"> MD5 - це поліпшена версія MD4. Хоча вона складніше MD4, їх схеми схожі, і результатом MD5 також є 128-бітове хеш-значення.
Після деякої первісної обробки MD5 обробляє вхідний текст 512-бітовими блоками, розбитими на 16 32-бітових...