Лучше всего сохранить пароль в mysql, который можно расшифровать также с помощью php

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

Теперь мой пользователь хочет, чтобы, когда они забыли пароль, они должны получить тот же (старый) пароль вместо нового пароля.

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

Я запускаюсь на php и mysql.

Спасибо

Авинаш

Ответ 1

Не делай этого...

Сначала используйте что-то лучше, чем md5. Затем создайте способ "reset" пароля, но никогда не сможете фактически восстановить пароль из db...

Это сделает ваше приложение менее безопасным, но, возможно, еще хуже; у вас и ваших пользователей будет проблема, если ваши данные будут украдены! У кого-то будет база данных с именами пользователей и паролями всех ваших пользователей!

Ответ 2

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

Ответ 3

Не делай этого, это поставит под угрозу вашу безопасность! Вся идея одностороннего шифрования заключается в том, что если ваша база данных взломана, вы не столкнетесь с проблемой, что все ваши пароли пользователей будут известны вместе с их адресами электронной почты!

Ответ 5

Не безопасно делать это, вы можете создать способ reset пароля

Ответ 6

Если вы используете внутренний частный сайт без каких-либо проблем с безопасностью, просто храните пароли с XOR 0xAD каждый байт. В противном случае reset является единственным вариантом.

Ответ 7

  • создавать динамические соли (2, один "постоянный", чтобы смешивать с паролем перед хэшированием/крипцией, другой динамический, меняющийся каждый раз, когда пользователь входит в систему);

    $dynamicSalt = '';
    for ($i = 0; $i < 8; $i++) 
    {    
        $dynamicSalt .= chr(rand(33, 126)); 
    }
    
  • никогда не сохранять пароли каким-либо образом, которые могут помочь вам "декодировать" их позже, вам не нужно получать исходный пароль, но чтобы пользователи reset it

Если вам действительно нужно сохранить исходные пароли, создайте учетную запись базы данных только с разрешениями WRITE и сохраните ее в другой базе данных (на другом сервере?).

Ответ 8

Невозможно сохранить пароль таким образом, чтобы он по-прежнему восстанавливался без

1) сохранение ключа дешифрования в вашем коде/данных (что скорее поражает цель хэширования/шифрования пароля)

2) шифрование пароля с использованием общедоступного/закрытого ключа шифрования маршрутизации восстановления через som вроде полу-ручного процесса, где пароль можно восстановить.

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

С.