Когда пользователи регистрируются, я должен хранить их электронную почту в db как есть или хеш. Я хочу, чтобы иметь возможность расшифровать его позже, так что я должен использовать md5?
Спасибо!
Нет, md5()
– односторонняя хеш-функция . Вы не можете расшифровать его значение. Обычно он используется для паролей, которые не нужно расшифровывать. Вместо этого вы сравниваете хеши как:
$salt = "adding some secret to increasse security"; if (md5($user_password . $salt) == $user_password_hash_from_db) { ## password is ok }
Если вы хотите расшифровать свое значение, используйте вместо этого функцию crypt
php. Но для этого могут потребоваться дополнительные модули.
В любом случае я не вижу практической причины для шифрования электронной почты.
Не секрет, что шифровать адреса электронной почты. Если кто-то действительно хочет, чтобы их электронная почта была приватной, они не дали бы ее на ваш сайт в первую очередь 🙂
MD5 – это хеш, который делает все возможное, чтобы вернуть исходное значение. Вы должны использовать шифрование вместо хэша, если хотите вернуть его обратно.
Я согласен с тем, что электронные письма являются (второстепенной) проблемой информационной безопасности, поскольку это становится личной информацией, которую вы выпустили в мир, если кто-то получает доступ к вашей базе данных, но вам будет необходимо использовать метод двустороннего шифрования / дешифрования как сказал Иван.
Просто имейте в виду, что базовое хеширование MD5 больше не является безопасным хешем.
Поскольку wikipedia говорит по-разному, больше не защищается ( http://en.wikipedia.org/wiki/MD5 ):
US-CERT Департамента внутренней безопасности США заявил, что MD5 «следует считать криптографически сломанным и непригодным для дальнейшего использования» [7], и большинство заявлений правительства США будут вынуждены перейти к семейству хэш-функций SHA-2 к 2010 году. [8]
Я думаю, что одна из основных проблем заключается в том, что в наши дни есть радужные таблицы хешей md5, поэтому голый md5 очень восприимчив к жестокому форсированию.
Подумайте, что это полезный инструмент для незначительного обложения и дезинфекции сложных наборов данных, но это уже не по-настоящему безопасный хеш. Могут быть специальные обручи, которые вы можете прыгать, как с помощью соли, так и с помощью вложенных хешей md5, чтобы сделать их более безопасными, хотя я не криптограф. Возможно, вы захотите проверить другие SO-потоки, подобные этому, для хороших общих решений шифрования.
Когда вы используете md5, вы не сможете его расшифровать. md5 – односторонняя -hash-функция.
md5 не является методом шифрования, это односторонний хеш. Нет причин шифровать адреса электронной почты в базе данных. Я оставил бы их как есть.
Если вы собираетесь расшифровать их позже, MD5 не будет вариантом, поскольку он только хеширует строки, вы теряете исходные данные.
Я предлагаю вам попробовать некоторые встроенные функции шифрования PHP для этого.
Другие ответы говорят все.
Тем не менее, вы всегда должны шифровать хэш- пароли, по крайней мере, с md5 () и солью, как указано в ответе Ивана.