我试图远程将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执行此操作而不会出现问题,但需要能够通过脚本执行此操作。
答案 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).'$');