在我使用Laravel 5.1的项目中,除了Hash默认类之外,我还使用我的库来加密密码。那么我怎样才能检查Laravel Hash是否有一个字符串?示例:
$ 2Y $ 10 $ ug8B6Pxs546eQBNICxsEOOH3NgpXjOIo.g4rf1FPZk2xJncWcFUpu
感谢您的帮助。
答案 0 :(得分:8)
你可以检查长度
if( strlen($hash) == 60 )
PASSWORD_BCRYPT - 使用CRYPT_BLOWFISH算法创建哈希。 这将使用“$ 2y $”生成标准的crypt()兼容哈希 标识符。结果将始终为60个字符的字符串,或者为FALSE 失败。
http://php.net/manual/en/function.password-hash.php
此外,您可以检查$ 2y $标识符。像这样的regx
preg_match('/^\$2y\$/', $hash );
或者甚至使用strpos($hash, '$2y$')
,虽然我不确定它会给我带来什么偏移。
所以例如
$hash = '$2y$10$ug8B6Pxs546eQBNICxsEOOH3NgpXjOIo.g4rf1FPZk2xJncWcFUpu';
if( strlen($hash) == 60 && preg_match('/^\$2y\$/', $hash ))
你可以非常自信,如果它以$2y$
开头并且长度为60,那么它就是哈希。可能会有非零的机会遇到类似的东西,但它实际上是无法的。