将变量拆分为定义的块数

时间:2014-03-21 12:14:21

标签: php hash passwords

我正在尝试创建自己的密码哈希,我认为我可以使用chunk_split()将字符串分成两部分。显然,我没有理解文档!

现在,我的问题是,是否有一种不同的方式来分割字符串 - PHP会很好,其他语言不是问题而且很难 - 变成3个片段?

我确实有其他想法,但这对我来说似乎是最好的方式。

乔纳森

2 个答案:

答案 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.';
}

?>