【问题标题】:Set password to postfix email users stored in mysql by php通过php为存储在mysql中的postfix电子邮件用户设置密码
【发布时间】:2014-08-17 22:56:56
【问题描述】:

我正在开发一个服务器控制面板,但是我一直无法在mysql数据库中正确设置用户密码。

用于存储密码的mysql查询如下:

ENCRYPT('firstpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16)))

然而,我无法在 php 中复制结果(当然,使用静态盐):它们只是不匹配。

这是我一直在使用的 php 代码:

$salt = '1234567890123456';
$password = 'hello';
$hexhash = hash('sha512', '$6$'. $salt);
// bda6a11cc3aa00b8fe46f0559e86b3e4be3a6646f7dca2df29da1db86cfd7fc0ceb9ca076d16f0296b82e120170f08e049f607cc6e2d7328976f8cb4e8cacf98
$binhash = hex2bin($hexhash);
$hash = base64_encode($binhash);
// vaahHMOqALj+RvBVnoaz5L46Zkb33KLfKdoduGz9f8DOucoHbRbwKWuC4SAXDwjgSfYHzG4tcyiXb4y06MrPmA==

密码应该只是12NKz5XM5JeKI。 关于为什么 mysql 和 php 实现不同的任何线索?

【问题讨论】:

    标签: php mysql encryption passwords postfix-mta


    【解决方案1】:

    发现,与我在 Google 上看到的相反(有些人试图使用 sha512 哈希),MySQL ENCRYPT 函数只使用普通的 unix crypt 库,所以实现起来真的很简单它在 PHP 中。

    代码如下:

    $password = 'firstpassword';
    $salt = '$6$' . '6bfd195afba021a2';
    
    // or, if you want the random version, 
    $password = 'firstpassword';
    $salt = '$6$' . substr(md5(microtime()),16);
    
    // And finally the generation
    echo crypt($password, $salt);
    

    很遗憾,互联网上没有这个代码,这就是我与你分享它的原因:)

    【讨论】:

      猜你喜欢
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      相关资源
      最近更新 更多