如何在php中邮寄md5密码?

时间:2013-12-19 02:50:27

标签: php email passwords md5

我正在使用md5作为密码并将其存储在MySQL中。我没有登录的问题,但我需要的是,我想将用户在注册期间输入的确切密码邮寄到他的邮件id。我可以得到回密码并发送邮件?

// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// encrypt password
$encrypted_mypassword=md5($mypassword);

3 个答案:

答案 0 :(得分:2)

正如大家都指出的那样,使用md5根本不是一个好主意。考虑使用类似bcrypt的东西,这是用PHP实现相对简单的。确保使用随机盐,并正确实施,以确保它正在做你正在做的事情。这是一个很好的指南,您可以使用https://gist.github.com/marcoarment/1053158

您可以考虑向用户发送一个随机生成的哈希值,而不是向用户发送他们的密码,这是一个糟糕的选择,这些哈希值会将它们带到您的应用程序,在那里他们可以完全自己重置密码。

使用PHP发送邮件可能是一个简单的过程。你可以参考这个http://php.net/manual/en/function.mail.php。有几个很好的例子。要发送不太可能以垃圾邮件结尾的交易邮件,您可以考虑使用http://postmarkapp.com等服务。

答案 1 :(得分:0)

如果您的字符串转换为md5字符串,您再也不会将其恢复,但您可以尝试在网络上使用md5解密器,但它不能100%按预期工作。尝试使用新密码重置,我认为它更安全。

答案 2 :(得分:0)

要直接回答您的问题,您可以通过这种方式发送用户的“初始密码”(假设MD5 - 但无论您使用何种哈希算法,逻辑都是相同的。)

$seed_password = $_POST['initial_password'];  // Save the user's selected password to this variable.
$hash_password = md5($seed_password); // This variable will now hold your hashed password.

// Save the $hash_password to the database.
#  YOUR CODE HERE

// Email the Seed Password (in the simplest manner possible).
mail('target@email.com' , 'Your new password' , 'Your new password is '. $seed_password);

这将在散列之前通过电子邮件发送密码的值。同时,散列密码将存储在您的数据库中。

现在 - 当您的用户登录时,您将不得不接受他们输入的密码并在与数据库中的散列值进行比较之前对其进行HASH。