Зачем это нужно?При необратимом шифровании информация зашифровывается таким образом, что не подлежит обратной расшифровке. На первый взгляд это может показаться странным, в действительности же такой метод шифрования ис-пользуется очень часто. Функции, с помощью которых реализуется однонаправленное шифрование, называются функциями хеширования. При использовании таких функций создается уникальный хеш-код строки. Наиболее часто в качестве алгоритма хеширования применяется алгоритм MD5, реализовать который можно с помощью одноименной функции: Code string md5(string str[, bool raw_output]) В качестве обязательного аргумента эта функция принимает строку str, которую необходимо зашифровать, и возвращает ее уникальный 128-битовый хеш-код. Если необязательный аргумент raw_output имеет значение true, то возвращается бинарная строка из 16 символов. Вероятность того, что две строки дадут одинаковый хешкод, стремится к нулю. Аналогичная функция md5_file () часто используется для создания уникального хеш-кода объемных файлов, которые передаются по сети. Загрузив файлы, всегда можно проверить целостность хеш-кода, вычислив его по алгоритму MD5 и сравнив полученный результат с хеш-кодом, предоставляемым распространителем. Это позволяет отследить повреждения файла, вызванные передачей через сеть, а так же предотвращает фальсификацию файла. Такой способ часто применяют при распространении объемных дистрибутивов. При помощи этой функции можно зашифровывать различные данные, к примеру, пароли пользователей. Это предоставляет возможность организовать следующий алгоритм авторизации пользователей. При первой регистрации пользователя сохраняется хеш-код его пароля (к примеру, в базе данных). При дальнейших посещениях странички хеш-код вводимого пользователем пароля сравнивается с сохраненным ранее хеш-кодом. Если эти отпечатки совпадают, авторизация считается успешной. Такая схема авторизации не позволяет получить непосредственный доступ к паролям, даже если происходит хищение базы данных. В этом случае злоумышленник вынужден тратить значительное машинное время на перебор паролей по словарю, поэтому пароли вида W5t7,9yuP практически не поддаются расшифровке, в то же время необратимое шифрование не сможет защитить от перебора при пароле вида 12345. |