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

问题描述 投票:0回答:1

我正在尝试远程将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执行此操作而不会出现问题,但需要能够通过脚本执行此操作。

php openldap
1个回答
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).'$');
© www.soinside.com 2019 - 2024. All rights reserved.