Двустороннее шифрование по своей природе менее безопасно, потому что где-то хранятся реальные данные. То есть у вас есть пароль «привет». Затем вы хэшируете, вы получаете 5d41402abc4b2a76b9719d911017c592. Это бессмысленно для нормального человека, и они не будут знать, как его расшифровать, не зная правильного алгоритма шифрования. Они также не могут использовать это, потому что используется только оригинальный пароль. Вы проверяете пароль, хешируя его и сравнивая с хешем (также сохраненным). 5d41402abc4b2a76b9719d911017c592 hashed is 69a329523ce1ec88bf63061863d9cb14, поэтому они не совпадают. Даже если пользователь знает хешированный пароль, он ничего не может извлечь из него.
Таким образом, вы можете хранить зашифрованные данные, но если вы расшифровываете их, когда извлекаете, тогда любой может их использовать.
Безопасность отправки пользователю ссылки по сравнению с предоставлением ему пароля - это другая проблема. Если вы отправите пароль по электронной почте, он будет распечатан в виде обычного текста для всеобщего обозрения (и использования). Предоставление им ссылки, позволяющей им вводить новый пароль, означает, что никто не увидит его, который немного более безопасен, но если кто-то, совершивший мошенничество, имеет доступ к этой ссылке, это вызовет проблемы.
Что касается AES, я не могу сразу узнать об этом слишком много, но похоже, что не имеет значения, что вы шифруете. Поэтому, если вы используете AES_DECRYPT (AES_ENCRYPT ('x', 'b'), 'b'); он вернет «х». Вы должны следить за ключом.