md5加密密码与phpMailer问题


md5 encrypted password with phpMailer issue

可能的重复项:
md5 密码与 phpMailer

大家好,提前感谢您阅读本文。我以md5格式在我的数据库中存储了一个电子邮件帐户的密码。然后,当我使用以下代码通过phpMailer向网站管理员发送通知电子邮件时,我收到stmp连接失败错误。没有 md5 加密的相同代码可以完美运行。

  $mail = new PHPMailer(); 
  $mail->IsSMTP(); // send via SMTP
  $mail->SMTPAuth = true; // turn on SMTP authentication
  $mail->Username = $USR_EMAIL; // SMTP username
  $mail->Password = md5($MAIL_PWD); // SMTP password
  .
  .
  .

任何人都知道为什么不会发送带有md5密码的电子邮件?我应该把一些东西改成class.phpMailer吗?感谢您阅读本文

您似乎正在对密码进行双重哈希处理。正如你所说,它以 md5 格式存储在数据库中,然后你再次 md5 它,所以你实际上是在做:

$passwd = 'hello';
$mail->Password = md5(md5($passwd));

$mail->Password = $MAIL_PWD;

会工作。

但是,请注意,您通常无法将 md5 哈希发送到邮件服务器并使其工作。然后,服务器将对你发送的pasword文本进行自己的散列/加密,密码的md5与实际密码有很大不同。您需要发送密码的真实原始文本,而不是散列版本。

您说数据库中的密码以MD5格式存储。如果我再看一下你现在做的流程是:

数据库(MD5中的密码)-> PHP代码(密码转换为MD5)(访问SMTP)

在你这样做的时候:

转换为MD5,你实际上这样做:md5(md5("密码"))。如果我在我的终端中这样做,我会得到:

localhost:~ user$ md5 -s password
MD5 ("password") = 5f4dcc3b5aa765d61d8327deb882cf99
localhost:~ user$ md5 -s 696d29e0940a4957748fe3fc9efd22a3
MD5 ("5f4dcc3b5aa765d61d8327deb882cf99") = 696d29e0940a4957748fe3fc9efd22a3
如果不是这种情况,那么如果PHPMailer源代码

已经转换为MD5,则可以尝试在PHPMailer源代码中查看该密码方法。也许它也在类/对象中设置以选择要使用的哈希方法?