Когда пользователи регистрируются, я должен хранить их электронную почту в db как есть или хеш. Я хочу, чтобы иметь возможность расшифровать его позже, так что я должен использовать md5?
Благодарю вас!
Когда пользователи регистрируются, я должен хранить их электронную почту в 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. Но для этого могут потребоваться дополнительные модули.
В любом случае я не вижу практической причины для электронной почты crypt.
Он не является обычным для шифрования адресов электронной почты. Если кто-то действительно хочет сохранить свою электронную почту в частном порядке, они не будут отсылать ее на ваш сайт в первую очередь:)
MD5 - хеш, который делает все возможное, чтобы вернуть исходное значение. Вы должны использовать шифрование вместо хэша, если вы хотите вернуть его обратно.
Я согласен с тем, что электронные письма являются (второстепенной) проблемой информационной безопасности, поскольку это становится личной информацией, которую вы выпустили в мир, если кто-то получает доступ к вашей базе данных, но вам будет необходимо двустороннее шифрование/метод расшифровки, чтобы вытащить электронные письма обратно, как сказал Иван.
Просто помните, что базовое хеширование MD5 больше не является безопасным хешем.
Поскольку wikipedia говорит по-разному, больше не защищается (http://en.wikipedia.org/wiki/MD5):
US-CERT Департамента США Homeland Security заявила, что MD5 "должен быть считается криптографически сломанным и непригодны для дальнейшего использования" [7] и большинство государственных приложений США потребуется перейти на SHA-2 семейство хэш-функций к 2010 году. [8]
Я думаю, что одна серьезная проблема заключается в том, что в наши дни есть радужные таблицы хешей md5, поэтому голый md5 очень восприимчив к грубым принуждениям.
Считайте его полезным инструментом для незначительного обложения и дезинфекции сложных наборов данных, но он не является действительно безопасным хешем. Могут быть специальные обручи, которые вы можете прыгать, как с помощью соли, так и с помощью вложенных хешей md5, чтобы сделать их более безопасными, хотя я не криптограф. Возможно, вы захотите проверить другие потоки SO, такие как этот для хороших общих решений для шифрования.
Когда вы используете md5, вы не сможете его расшифровать. md5 является односторонней -hash функцией.
md5 не является методом шифрования, это односторонний хеш. Нет причин для шифрования адресов электронной почты в базе данных. Я оставил бы их как есть.
Если вы собираетесь расшифровать их позже, MD5 не будет вариантом, так как это только хэши, вы теряете исходные данные.
Я предлагаю вам попробовать некоторые встроенные функции шифрования PHP для этого.
Другие ответы говорят все.
Однако вы всегда должны шифровать хеш пароли с по крайней мере md5() и солью, как указано в ответе Ивана.