Php. Должен ли я шифровать адреса электронной почты?

Когда пользователи регистрируются, я должен хранить их электронную почту в db как есть или хеш. Я хочу, чтобы иметь возможность расшифровать его позже, так что я должен использовать md5?

Благодарю вас!

Ответ 1

Нет, md5() - односторонняя хеш-функция. Вы не можете расшифровать его значение. Обычно он используется для паролей, которые не нужно расшифровывать. Вместо этого вы сравниваете хеши, например:

$salt = "adding some secret to increasse security";
if (md5($user_password . $salt) == $user_password_hash_from_db) {
    ## password is ok
}

Если вы хотите расшифровать свое значение, вместо этого используйте crypt php. Но для этого могут потребоваться дополнительные модули.

В любом случае я не вижу практической причины для электронной почты crypt.

Ответ 2

Он не является обычным для шифрования адресов электронной почты. Если кто-то действительно хочет сохранить свою электронную почту в частном порядке, они не будут отсылать ее на ваш сайт в первую очередь:)

Ответ 3

MD5 - хеш, который делает все возможное, чтобы вернуть исходное значение. Вы должны использовать шифрование вместо хэша, если вы хотите вернуть его обратно.

Ответ 4

Я согласен с тем, что электронные письма являются (второстепенной) проблемой информационной безопасности, поскольку это становится личной информацией, которую вы выпустили в мир, если кто-то получает доступ к вашей базе данных, но вам будет необходимо двустороннее шифрование/метод расшифровки, чтобы вытащить электронные письма обратно, как сказал Иван.

Просто помните, что базовое хеширование MD5 больше не является безопасным хешем.

Поскольку wikipedia говорит по-разному, больше не защищается (http://en.wikipedia.org/wiki/MD5):

US-CERT Департамента США Homeland Security заявила, что MD5 "должен быть считается криптографически сломанным и непригодны для дальнейшего использования" [7] и большинство государственных приложений США потребуется перейти на SHA-2 семейство хэш-функций к 2010 году. [8]

Я думаю, что одна серьезная проблема заключается в том, что в наши дни есть радужные таблицы хешей md5, поэтому голый md5 очень восприимчив к грубым принуждениям.

Считайте его полезным инструментом для незначительного обложения и дезинфекции сложных наборов данных, но он не является действительно безопасным хешем. Могут быть специальные обручи, которые вы можете прыгать, как с помощью соли, так и с помощью вложенных хешей md5, чтобы сделать их более безопасными, хотя я не криптограф. Возможно, вы захотите проверить другие потоки SO, такие как этот для хороших общих решений для шифрования.

Ответ 5

Когда вы используете md5, вы не сможете его расшифровать. md5 является односторонней -hash функцией.

Ответ 6

md5 не является методом шифрования, это односторонний хеш. Нет причин для шифрования адресов электронной почты в базе данных. Я оставил бы их как есть.

Ответ 7

Если вы собираетесь расшифровать их позже, MD5 не будет вариантом, так как это только хэши, вы теряете исходные данные.

Я предлагаю вам попробовать некоторые встроенные функции шифрования PHP для этого.

Ответ 8

Другие ответы говорят все.

Однако вы всегда должны шифровать хеш пароли с по крайней мере md5() и солью, как указано в ответе Ивана.