Справка по шифрованию паролей в Social Engine - PullRequest
1 голос
/ 17 июля 2010

Я хочу создать другую страницу регистрации, связанную с базой данных социального движка, но когда я ввожу пароль MD5 и сохраню его в таблице se_users, пользователь не сможет войти, я считаю, что у социального движка есть другое шифрование метод, может кто-нибудь, пожалуйста, дайте мне функцию для шифрования паролей социальным движком?

Это их функция, но я не знаю, как реализовать ее в моем скрипте:

function user_password_crypt($user_password)
{
global $setting;

if( !$this->user_exists )
{
  $method = $setting['setting_password_method'];
  $this->user_salt = randomcode($setting['setting_password_code_length']);
}

else
{
  $method = $this->user_info['user_password_method'];
}

// For new methods
if( $method>0 )
{
  if( !empty($this->user_salt) )
  {
    list($salt1, $salt2) = str_split($this->user_salt, ceil(strlen($this->user_salt) / 2));
    $salty_password = $salt1.$user_password.$salt2;
  }
  else
  {
    $salty_password = $user_password;
  }
}

$user_password_crypt = md5($salty_password);

return $user_password_crypt;
}

Спасибо

Ответы [ 4 ]

4 голосов
/ 30 ноября 2012

социальный движок использует комбинацию соли по умолчанию, соли пользователя и пароля пользователя для шифрования пароля, поэтому вам просто нужно объединить эти три данные и преобразовать в md5.

$ enc_password = md5 ('default_decurity_salt', 'user_password', 'user_salt');

EX. - MD5 ('6e3cf54ce0aa10bb69d69926e82b62b3be9022b9'. '123456'. '3486524');?

Это будет работать.

3 голосов
/ 23 апреля 2013

Вы можете попробовать это

md5 ('default_salt', 'user_salt', 'user_password');

1 голос
/ 17 июля 2010

Они добавляют и добавляют соли к паролю перед тем, как запустить его через MD5.

Так генерируется соль, она выглядит как случайная строка, длина которой указана в конфигурации приложения "

$this->user_salt = randomcode($setting['setting_password_code_length']);

Здесь они разделяют одну соль на две части и ставят левую сторону перед паролем, а правую - после "

list($salt1, $salt2) = str_split($this->user_salt, ceil(strlen($this->user_salt) / 2));
$salty_password = $salt1.$user_password.$salt2;

Теперь они хешируют подсоленный пароль:

$user_password_crypt = md5($salty_password);

Чтобы правильно расшифровать это, вам нужно будет прочитать соль для этого пользователя.

$username = $POST['username'];
$password = $POST['password'];
$user = get_user_from_database($username);
list($salt1, $salt2) = str_split($user->salt, ceil(strlen($user->salt) / 2));

$salted_password = md5($salt1.$password.$salt2);

if($salted_password == $user->crypted_password) {
  echo "Login successful";
} else {
  echo "Invalid password";
}

Вот страница Википедии о солях вкриптография.

0 голосов
/ 17 июля 2010

Несколько вещей:

Вы храните MD5-хэш пароля пользователя?Согласно опубликованному вами коду, Social Engine использует хэш (метод предотвращения «радужных таблиц»).

Хэш MD5 - не криптографически безопасный способ хэширования пароля.Кроме того, хеширование паролей при входе в систему и передача хэша не более безопасны, чем передача пароля в виде простого текста.Для безопасного входа в систему вам нужно будет выполнить вход через HTTPS (или менее правильно, зашифровав пароль)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...