При работе с CUser::Add Битрикс сам хеширует пароль.
Но если вы используете D7 ORM (\Bitrix\Main\UserTable::add) или пишите свою систему авторизации, вам нужно работать с хешами вручную.
Класс Bitrix\Main\Security\Password предоставляет стандартизированные методы для этого.
1. Хеширование пароля (для сохранения)
Если вы создаете пользователя через UserTable, пароль нужно предварительно захешировать.
use Bitrix\Main\Security\Password;
use Bitrix\Main\UserTable;
$plainPassword = "MySuperPassword123";
// Создаем хеш
$passwordHash = Password::hash($plainPassword);
// Сохраняем в базу
$result = UserTable::add([
'LOGIN' => 'newuser',
'PASSWORD' => $passwordHash, // Сохраняем ХЕШ, а не пароль
'EMAIL' => 'test@test.com',
'ACTIVE' => 'Y'
]);2. Проверка пароля (для авторизации)
Если вам нужно проверить, подходит ли введенный пароль к хешу из базы данных (например, при реализации своего API входа).
use Bitrix\Main\Security\Password;
use Bitrix\Main\UserTable;
$login = "newuser";
$inputPassword = "MySuperPassword123";
// 1. Получаем хеш пользователя из БД
$user = UserTable::getList([
'select' => ['ID', 'PASSWORD'],
'filter' => ['=LOGIN' => $login]
])->fetch();
if ($user) {
// 2. Проверяем совпадение
if (Password::equals($user['PASSWORD'], $inputPassword)) {
echo "Пароль верный!";
// Можно авторизовать: $USER->Authorize($user['ID']);
} else {
echo "Неверный пароль.";
}
}Важные нюансы:
- Битрикс использует разные алгоритмы хеширования (от старого MD5 до современного Blowfish) в зависимости от настроек и версии ядра. Метод Password::hash автоматически выберет самый безопасный из доступных.
- Метод Password::equals (или verify) умеет работать со всеми историческими форматами хешей Битрикс.
Вывод:
Никогда не используйте md5() вручную.
Используйте класс Bitrix\Main\Security\Password — это гарантирует, что ваши хеши будут криптостойкими и совместимыми со стандартной системой авторизации Битрикс.
Bitrix\Main\Security\Password, hash, verify, проверка пароля битрикс, хеширование паролей, безопасность битрикс, создание пользователя D7.