gpt4 book ai didi

php - 使用各种方法的密码哈希

转载 作者:行者123 更新时间:2023-12-02 05:26:51 24 4
gpt4 key购买 nike

我一直在寻找存储用户密码的最佳方式,但我并不是真正关心安全问题,所以我使用 Google 找到了很多关于加密和类似内容的信息。

我不喜欢使用可以在博客或互联网网站上获得的片段,我宁愿创建自己的解决方案,所以我最终开发了两个功能:一个创建哈希,另一个检查“散列”密码。

我不知道我做的对不对,或者我只是在增加我的问题,所以看看下面的函数。

// Creates a simple password's hash
function hashPassword( $password = false )
{
// Checks if the password has more than 6 characters
if( strlen( $password ) < 6 )
{
// Kills the script
exit('Password is too short.');
}

// Split the 4 first characters of the password
$salt = substr( $password, 0, 4 );

// Calculate the md5 hash of the salt
$salt = md5( $salt );

// Get the rest of the password
$password = substr( $password, 3, strlen( $password ) );

// Calculate the md5 hash of the password
$password = sha1( $salt . $password );

// Crypt the password
$password = crypt( $password );

return $password;
}

这就是我要存储的密码。现在,看看我要检查密码是否正确的方法。

// Checks if a hashed password match a user input password
function checkHashedPassword( $password = false, $hashedPassword = false )
{
// Checks if the password has more than 6 characters
if( strlen( $password ) < 6 )
{
// Kills the script
exit('Password is too short.');
}

// Split the 4 first characters of the password
$salt = substr( $password, 0, 4 );

// Calculate the md5 hash of the salt
$salt = md5( $salt );

// Get the rest of the password
$password = substr( $password, 3, strlen( $password ) );

// Calculate the md5 hash of the password
$password = sha1( $salt . $password );

// Checks the password and hash
if( crypt( $password, $hashedPassword ) == $hashedPassword )
{
// Returns true
return true;
}

// Returns false by default
return false;
}

正如您所注意到的,我将创建一个存储密码的变量,然后我可以检查它是否正常,如下面的代码:

$pass = hashPassword( $_POST['password'] );

if( !checkHashedPassword( $_POST['password'], $pass ) )
{
exit('Password incorrect!');
}

那么,它会安全地工作吗?

最佳答案

如果您正在寻找一种通用且简单的方法 Adding simple password hashing API仍然在 php 的 RFC 中,但非常好 implementation by ircmaxwell你可以使用

例子

  $hash = password_hash($password, PASSWORD_BCRYPT);

验证

if (password_verify($password, $hash)) {
/* Valid */
} else {
/* Invalid */
}

Download Here

关于php - 使用各种方法的密码哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12964054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com