Php 社交引擎密码加密帮助

Php 社交引擎密码加密帮助,php,encryption,md5,social-networking,Php,Encryption,Md5,Social Networking,我想制作另一个链接到社交引擎数据库的注册页面,但当我MD5密码并将其存储在se_users表中时,用户无法登录,我相信社交引擎有另一种加密方法,有人能给我一个通过社交引擎方式加密密码的函数吗 这是它们的功能,但我不知道如何在我的脚本上实现它: function user_password_crypt($user_password) { global $setting; if( !$this->user_exists ) { $method = $setting['setting_pa

我想制作另一个链接到社交引擎数据库的注册页面,但当我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;
}

谢谢

在通过MD5运行密码之前,他们正在为密码添加和预加盐

这是生成salt的方式,看起来像一个随机字符串,其长度在应用程序配置中指定”

在这里,他们把一根盐一分为二,把左边放在密码前面,右边放在密码后面。”

现在,他们散列了salt密码:

$user_password_crypt = md5($salty_password);
为了正确解密,您需要做的是为该用户读取salt

$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";
}

密码术中的salt。

在通过MD5运行密码之前,他们会在密码中添加salt并在其前面加上salt

这是生成salt的方式,看起来像一个随机字符串,其长度在应用程序配置中指定”

在这里,他们把一根盐一分为二,把左边放在密码前面,右边放在密码后面。”

现在,他们散列了salt密码:

$user_password_crypt = md5($salty_password);
为了正确解密,您需要做的是为该用户读取salt

$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";
}
关于密码学中的盐。

有几件事:

您是否正在存储用户密码的MD5哈希?根据您发布的代码,Social Engine正在添加哈希(一种防止彩虹表的方法)

另一方面,MD5散列不是密码散列的加密安全方式。此外,在登录时对密码进行散列并传输散列并不比以明文形式传递密码更安全。为了安全登录,您需要通过HTTPS进行登录(或通过加密密码进行更准确的登录)

以下几点:

您是否正在存储用户密码的MD5哈希?根据您发布的代码,Social Engine正在添加哈希(一种防止彩虹表的方法)


另一方面,MD5散列不是密码散列的加密安全方式。此外,在登录时对密码进行散列并传输散列并不比以明文形式传递密码更安全。为了安全登录,您需要通过HTTPS进行登录(或通过加密密码进行更准确的登录)

社交引擎使用默认安全密码、用户密码和用户密码的组合来加密密码,因此您只需将这三种数据合并并转换为md5即可

$enc_password=md5('default_decurity_salt'、'user_password'、'user_salt')

例如-MD5('6e3cf54ce0aa10bb69d69926e82b62b3be9022b9''123456''3486524')


它会起作用。

社交引擎使用默认安全salt、用户salt和用户密码的组合来加密密码,因此您只需将这三种数据组合起来并转换为md5即可

$enc_password=md5('default_decurity_salt'、'user_password'、'user_salt')

例如-MD5('6e3cf54ce0aa10bb69d69926e82b62b3be9022b9''123456''3486524')

它会起作用的。

你可以试试这个

md5('default_salt'、'user_salt'、'user_password')

你可以试试这个


md5('default_salt'、'user_salt'、'user_password')

你的意思是散列,而不是加密。你的意思是散列,而不是加密。嗨,谢谢你的回答,但是如果生成的md5散列的一部分是随机代码,那么它怎么总是一样的呢?不是每次都是随机的。第一次创建用户帐户时,会生成一个随机代码,并与密码一起保存。每次你得到用户的信息时,他的salt将与你第一次生成的字符串相同,不再是随机的。嗨,谢谢你的回答,但是如果生成的md5散列的一部分是随机代码,那么它如何总是相同的呢?不是每次都是随机的。第一次创建用户帐户时,会生成一个随机代码,并与密码一起保存。每次您获得用户的信息时,他的salt将与您第一次生成的字符串相同,不再是随机的。