аченнями.
Замість паролів будемо зберігати їх хеш-значення. Користувач вводить при вході логін і пароль. У файлі за логіном шукається потрібний хеш. Він порівнюється з хешем того, що введено в полі «пароль» користувачем. Якщо рівні, то користувача пропускають, інакше - ні.
Якщо хтось залізе у файл з даними користувачів (де зберігається логін і паролі), замість паролів він побачить хеши.
Наочно цю схему захищеного зберігання паролів за допомогою хешування можна намалювати так:
У криптографії традиційно значення f пишуть не як звичайне десятково число, а в двійковій або 16-ічной системі ( 026f8e459c8f89ef75fa7a78265a0025 ), і це називають хеш-значенням або просто хешем.
Делфі є бібліотека «IdHashMessageDigest» (Якщо встановлений пакет indy) вона містить функції з 128 бітним алгоритмом хешування.
Приклад
Uses IdHashMessageDigest;
... md5 (S: string): string; md5indy: TIdHashMessageDigest;, HEXhash, Base: string; indy:=TIdHashMessageDigest5. Create;// Створюємо екземпляр об'єкта:=StringOf (md5indy. HashString (S));// Отримуємо MD5-хеш:=md5indy. HashStringAsHex (Base);// Той же хеш, але в HEX-формі
end;
Результат: На вході рядок на виході 128 бітний хеш.
Тут метод HashString приймає на вході рядок, обчислює хеш і повертає його у вигляді масиву байтів (TidBytes). Тому додатково ми перетворимо цей масив в рядок, використовуючи функцію StringOf.
Метод HashStringAsHex також обчислює MD5-хеш, але на додаток відразу ж його переводить в HEX-форму.
Примітка - 128-бітний алгоритм хешування, розроблений професором Рональдом Л. Рівестом з Массачусетського технологічного інституту в 1991 році.
Контрольна сума
Контрольна сума файлу ( хеш ) - це певне значення, яке розраховується по набору даних з використанням певного алгоритму. Вона допомагає перевірити цілісність даних при їх зберіганні і передачі. Якщо у двох файлів збігається контрольна сума, це означає, що ці файли ідентичні за змістом , навіть якщо з якоїсь причини мають різні назви.
Наприклад ви завантажили файл, а потім з'ясували, що він дефектний (наприклад, програма, якій ви намагаєтеся його відкрити, видає повідомлення про помилку, хоча інші файли цього ж формату відкриває «на ура») . Як перевірити, чи був він дефектним спочатку, або ж відбулися якісь проблеми при скачуванні? Для цього і потрібна контрольна сума файлу.
Існують різні алгоритми хешування для створення контрольних сум. Скажімо, програми-архіватори використовують так званий циклічний надлишковий код (CRC). Він дозволяє упевнитися, що розпакування файлу з архіву пройшла без проблем, a отриманий файл ідентичний споконвічного. Програма BitTorrent використовує алгоритм SHA - 1, щоб перевіряти цілісність даних при завантаженні. Для перевірки цілісності завантажених файлів і пошуку дублікатів файлів зазвичай використовують алгоритм MD5.
Скажімо, ви вирішили завантажити дистрибутив опе...