Я пытаюсь создать пользовательский компонент регистрации для Joomla, и мне было интересно, если кто-нибудь знает, как создать правильное шифрование пароля для joomla? Пароли Joomla выглядят следующим образом:
fbae378704687625a410223a61c66eb1: VM6DwmVWHTwpquDq51ZXjWWADCIc93MR
Который я считаю md5 (или что-то) и одностороннее шифрование? Я просто ищу код php-кода для создания того же самого шифрования.
ура
Из joomla Forum это происходит позади:
Пример:
$salt = JUserHelper::genRandomPassword(32); $crypt = JUserHelper::getCryptedPassword("yourpassword", $salt); $password = $crypt.':'.$salt;
После немного большего поиска я нашел свой ответ, спасибо, ребята, за вашу помощь 🙂
EDIT: Я забыл упомянуть, что вам нужно включить эту строку перед вызовом JUserHelper:
jimport ( 'joomla.user.helper');
+1 для хранения хэша пароля, а не для хранения самого пароля.
Для защиты от предвыборных атак вы должны использовать случайную соль. Кроме того, вероятно, неплохо использовать более сильный алгоритм хэширования, такой как SHA-256, который, как мне кажется, поддерживается на PHP. Дополнительную информацию см. В разделе Безопасный хеш и соль для паролей PHP .
Я не знаю PHP, но на большинстве языков есть библиотека, поддерживающая md5 и (и другие алгоритмы хэширования). Я нашел это:
string md5 ( string $str [, bool $raw_output = false ] )
Вычисляет хэш MD5 str, используя «RSA Data Security, Inc. MD5 Message-Digest Algorithm» и возвращает этот хеш.
Вот пример:
<?php $password = 'apple'; if (md5($password) === '1f3870be274f6c49b3e31a0c6728957f') { echo "Password correct"; } ?>
Вы можете перейти в /libraries/joomla/user
и посмотреть функцию bind()
в user.php
Здесь будут созданы все пароли пользователей, создающие время регистрации.
//function to encrypt the string function encode5t($str) { for($i=0; $i<5;$i++) { $str=strrev(base64_encode($str)); //apply base64 first and then reverse the string } return $str; } //function to decrypt the string function decode5t($str) { for($i=0; $i<5;$i++) { $str=base64_decode(strrev($str)); //apply base64 first and then reverse the string} } return $str; }
В этой функции я зашифровал строку 5 раз с помощью base64_encode и перевернул строку с помощью strrev () и для дешифрования 5 раз, сначала изменив сначала строку, а затем применив base64_decode ().