Хеширование - это односторонняя функция (ну, отображение). Это необратимо, вы применяете алгоритм безопасного хэширования и не можете вернуть исходную строку. Максимум, что вы можете сделать, это сгенерировать то, что называется «столкновением», то есть найти другую строку, которая предоставляет тот же хеш. Криптографически безопасные алгоритмы хеширования предназначены для предотвращения возникновения коллизий. Вы можете атаковать безопасный хеш с помощью радужного стола , которому можно противостоять, применяя соль к хешу перед его сохранением.
Шифрование является правильной (двухсторонней) функцией. Это обратимо, вы можете расшифровать искаженную строку, чтобы получить исходную строку, если у вас есть ключ.
Небезопасная функциональность, на которую он ссылается, заключается в том, что если вы шифруете пароли, ваше приложение хранит где-то ключ, и злоумышленник, который получает доступ к вашей базе данных (и / или коду), может получить исходные пароли, получив как ключ, так и зашифрованный текст, тогда как с хэшем это невозможно.
Люди обычно говорят, что если взломщик владеет вашей базой данных или вашим кодом, ему не нужен пароль, таким образом, разница спорная. Это наивно, потому что вы по-прежнему обязаны защищать пароли своих пользователей, главным образом потому, что большинство из них используют один и тот же пароль снова и снова, подвергая их большему риску из-за утечки их паролей.