远程在OpenLDAP programmaticaly中将userPassword设置为{CRYPT-SHA-512}?

时间:2017-03-29 14:26:28

标签: php openldap

我试图远程将OpenLDAP userPassword设置为CRYPT-SHA-512。我更喜欢在PHP中这样做,但是我可以通过PHP(例如python)执行其他解决方案。

通过设置userPassword = '{SHA}'.base64_encode(sha1($password, true)),可以轻松地将userPassword设置为远程SHA1。

如何为CRYPT-SHA-512密码执行此操作?

我认为检查员必须使用相同的地穴和数量的轮次。

<?php
  $rounds = 5000; //??
  $salt = random_seventeen_char();
  $userPassword = '{CRYPT}'.crypt($password, '$6$rounds='.$rounds.'$'.salt.'$');
?>

我可以通过Apache Directory Studio执行此操作而不会出现问题,但需要能够通过脚本执行此操作。

1 个答案:

答案 0 :(得分:0)

您无法在OpenLDAP BINDPW中指定轮次。这是解决方案:

function randomSalt( $length ) {
        $possible = '0123456789'.
                'abcdefghijklmnopqrstuvwxyz'.
                'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
                './';
        $str = '';
        // mt_srand((double)microtime() * 1000000);

        while (strlen($str) < $length)
                $str .= substr($possible, (rand() % strlen($possible)), 1);

        return $str;
}

$hashes['userPassword'] = '{CRYPT}'.crypt($this->pass, '$6$'.randomSalt(16).'$');