【问题标题】:How to mail a md5 password in php?如何在 php 中邮寄 md5 密码?
【发布时间】:2025-11-26 09:05:03
【问题描述】:

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

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

【问题讨论】:

  • 这是散列点,明文是不可可恢复的。但由于您仍然使用 MD5,任何 'MD5 aabbcc...nn' 的 google 很可能会为您找到等效密码 ;-)
  • 1. MD5 现在已经过时了一段时间。你为什么用它? 2. MD5 是一种散列算法。这意味着它是一种方式。你不能把它找回来。 3. 颠倒密码是一种不好的做法。让用户重设密码。
  • 您绝对不想通过电子邮件发送密码。
  • @Eugen Rieck 首先感谢您的回复。实际上我知道如何从网站上获取它,但我想要的是,将用户的用户名和密码邮寄到他的邮件 ID
  • @JRameshFernandez:我会说你有责任让你的客户相信他们的要求是完全不合适的......

标签: php email passwords md5


【解决方案1】:

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

您可以考虑向他们发送一个随机生成的哈希,将他们带到您的应用程序中,在那里他们可以简单地自行重置密码。

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

【讨论】:

  • 我知道如何在 php 中发送邮件。并且正在发送用户名和密码,但该密码是哈希值,我不想这样。
  • 您的应用程序的任何用户都不会喜欢在收件箱中获得明文密码。假设我在公共 wifi 上检查我的非 SSL 电子邮件帐户,并用 zerocool 嗅探,他看到了邮件的内容?想象一下,我是一个精明的网络用户,我看到你有我的明文密码?我假设您以明文形式存储它,并且会避免像瘟疫一样提供的任何服务。没有任何借口,这是不好的做法,而且会不必要地危及用户。
  • 我明白每个人的意思,但这不是问题所在。请参阅我对您实际提出的问题的回答。
  • @cjaredrun 非常感谢。我明白了,你也说得很清楚
【解决方案2】:

要直接回答您的问题,您可以通过这种方式发送用户的“初始密码”(假设 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);

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

现在 - 当您的用户登录时,您将必须获取他们输入的密码并对其进行哈希处理,然后将其与数据库中的哈希值进行比较

【讨论】:

  • 请注意,我假设您使用 $_POST 获取密码,但当然您可以通过任何方式使用密码填充该变量 - 无论是 POST 还是自动生成。
  • 真的很欣赏你回答我问题的方式。这是我想要的确切答案。即使我了解发送明文密码的风险。但我只是问了客户的要求。我将尝试说服客户对此。非常感谢您的宝贵回复
  • 其实我没有改变。我认为这就像在 facebook 中喜欢,所以我喜欢这两个答案。刚才我意识到它不像facebook的like按钮。你的回答正是我所期望的。再次感谢您
  • 很高兴为您提供帮助:)
【解决方案3】:

如果您的字符串被转换为 md5 字符串,您将再也无法取回它,但您可以尝试在网络上使用 md5 解密器,但它并不能 100% 正常工作。尝试使用新密码重置,我认为它更安全。

【讨论】: