我正在尝试创建自己的密码哈希,我认为我可以使用chunk_split()
将字符串分成两部分。显然,我没有理解文档!
现在,我的问题是,是否有一种不同的方式来分割字符串 - PHP会很好,其他语言不是问题而且很难 - 变成3个片段?
我确实有其他想法,但这对我来说似乎是最好的方式。
乔纳森
答案 0 :(得分:3)
我正在尝试制作自己的密码哈希
不要尝试推出自己的加密方案或散列算法。如果您不是专家,那么您将犯很多错误。为什么要在互联网上提供许多优秀的解决方案时重新发明轮子?如果您使用的是PHP 5.x,则可以使用内置解决方案:password_hash()
和password_verify()
请参阅:Cryptography — Why shouldn't we roll our own?
但是,如果它仅用于学习目的,那么您可以将str_split()
与第二个参数一起使用。
示例:
$str = 'foobarbaz';
print_r(str_split($str, 3));
输出:
Array
(
[0] => foo
[1] => bar
[2] => baz
)
答案 1 :(得分:2)
如前所述,不要重新发明轮子。如果您有权访问(PHP 5> = 5.5.0),则使用内置函数password_hash。
e.g。
<?php
/**
* We just want to hash our password using the current DEFAULT algorithm.
* This is presently BCRYPT, and will produce a 60 character result.
*
* Beware that DEFAULT may change over time, so you would want to prepare
* By allowing your storage to expand past 60 characters (255 would be good)
*/
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";
// Outputs: $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
?>
现在,如果您想验证存储的密码哈希,那么也有一个函数:password_verify
E.g。
<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
if (password_verify('rasmuslerdorf', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>