Настройка шифрования данных в ModX
Добрый день! Решаю свои повседневные дела, столкнулся с такой проблемой, что шифрование данных в MODX Revolution проходит в формате PBKDF2 о чем наглядно сообщает документация файла changelog.txt:
[#325] Allow configurable user password hashing with PBKDF2 default implementationНаписал такой простой сниппет по установке пароля пользователю:
$q = $modx->newQuery('modUser');
 $q->innerJoin('modUserProfile', 'Profile');
 $q->where(array('modUser.username' => $email, 'OR:Profile.email:=' => $email)); 
 $user = $modx->getObject('modUser', $q);
 $user->set('password', '0987654321');
 $user->save();В результате получаю в значении password такую абракадабру: JUeI95e5CPSLCjPEbmXsCqf0U1yUxDXipbp0OMerguc=В интернете нарыл такой пример кода шифрования:
<?php
    $password = "password";
    $iterations = 1000;
    
    // Generate a random IV using mcrypt_create_iv(),
    // openssl_random_pseudo_bytes() or another suitable source of randomness
    $salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
    
    $hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);
    echo $hash;
    ?>Однако, хотел отметить, что тут указывается «соль», количество итераций у другие опции, в моем же примере, нету никаких даже параметров, ModX сам по умолчанию шифрует как-то таинственным образом, не раскрывая всех подробностей опций шифрования.Хотелось бы знать две вещи:
1) Как поменять в настройках Modx режим шифрования на более привычный, например, на md5?
2) Если менять нежелательно, то скажи тогда с помощью стандартных функций и возможностей ModX зашифровать свое значение чтобы получить идентичный результат как в сниппете?
Нужно это для следующих целей: делаю аутентификацию пароля пользователя, при сохранении получаю в формате PBKDF2 пароль, а преобразовать своими методами такой пароль из формы в PBKDF2 не могу, чтобы проверить подлинность пароля. Как решить эту ситуацию?
Комментарии: 5
if ($modx->user->passwordMatches('0987654321')) {
	echo 'Верный пароль!';
}github.com/modxcms/revolution/blob/master/core/model/modx/moduser.class.php            
                Пишу так: 
                    if ($modx->user->passwordMatches('0987654321'))
 {$boolpassword1 = "Верен!";}
 else 
 {$boolpassword1 = "Неверен!";}
 echo $boolpassword1;Пишет все время неверен пароль. Хотя идентичны они в не зашифрованном виде. Читал там у этой функции passwordMatches есть еще второй параметр, где указывается соль и прочее, это разве не играет роли в определении конечного результата?            
                $modx->user это пользователь, под которым сейчас смотришь. У него такой пароль? Для проверки другого пользователя нужно его сначала получить через 
                    $user = $modx->getObject('modUser', $q);
// и уже с ним проверка
$user->passwordMatches('0987654321');            
                Собственно так и делаю, я же выше в вопросе написал, как получаю данные конкретного пользователя. В моем случае, эта функция вообще ничего не возвращает, ни true, ни false.            
                    
                Ну по ее коду она не может ничего не возвращать, кроме true или false.
                    $result = $user->passwordMatches('0987654321');
var_dump($result);Какой результат?            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.