Самым распространенным способом защиты данных является их шифрование. Однако
этот способ имеет серьезный недостаток, если пароль для дешифровки будет
раскрыт, то сразу же можно будет прочитать весь текст документа. Очень серьезный
ущерб будет нанесен базе данных, если будут дешифрованы пароли пользователей
системы.
Альтернативным способом защиты является хеширование данных. Простой пример.
Имеем таблицу пользователей базы (tblUsers), где определены 2 ключевых поля:
Login и Password для входа в базу данных. Проведем регистрацию и проверку
пользователя User1 в программе, используя алгоритм MD5:
1. Алгоритм регистрации в базе данных
а) Пользователь входит в программу и заполняет поля: Login=User1, Password
=P1.
б) Мы связываем эти 2 строчки в одну: Login + Password = User1P1
в) Далее рассчитываем хэш функцию MD5(User1P1) =
fa37bf44d140f827a3cd79da9f350eb3
д) В таблицу пользователей (tblUsers) в поле Login пишем User1, а поле Password
!!! не пароль, а хэш строку, т.е. значение fa37bf44d140f827a3cd79da9f350eb3
2. Алгоритм проверки в базе данных
а) Другой пользователь входит в программу и заполняет поля: Login=User1,
Password =P5 (неправильный пароль).
б) Мы связываем эти 2 строчки в одну: Login + Password = User1P5
в) Далее рассчитываем хэш функцию MD5(User1P5) =
9e52b49ccadbd629d2637166e915205e
г) Сравниваем поле tblUsers.Password (fa37bf44d140f827a3cd79da9f350eb3) и
текущий результат 9e52b49ccadbd629d2637166e915205e. Эти строки не равны, значит
пароль неправильный и закрываем ему вход в базу данных.
Выводы.
Данный способ хранения паролей в базе данных обеспечивает нам надежный
уровень защиты, а именно, ПАРОЛИ НЕ ХРАНЯТСЯ в таблице, и нет единого ключа для
их расшифровки.
P.S. Для тех, кто любит более крутые варианты защиты, то можно добавить к
алгоритму некоторый постоянный секретный ключ, т.е. строка для хэширования будет
состоять из трех частей Login+Password+SecretKey. Это позволит нам пересылать
информацию через Интернет по открытым каналам. Так делают все платежные шлюзы:
webmoney, Paypal, которые контролируют данные по платежам между сайтом и шлюзом,
подписывая их электронной подписью, т.е. хэш строкой. Данные выводы можно
проверить ниже, используя алгоритмы MD5,SHA1,SHA256 на сайте, или загрузив
пример на Access