Введення 
   В даний час з хешем ми стикаємося практично на кожному кроці: при роботі з веб браузером, різними компіляторами, текстовими редакторами та перекладачами, базами даних тощо 
  Під хешем звичайно розуміють процес перетворення вхідного масиву даних довільної довжини в вихідну бітову рядок фіксованої довжини. 
  Такі перетворення також називаються хеш-функціями або функціями згортки, а їх результати називають хешем <# "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-бітових...