php - 如何检查Laravel Hash是否对字符串进行哈希处理?

标签 php regex laravel laravel-5 bcrypt

在使用Laravel 5.1的项目中,在哈希默认类旁边,我还使用库对密码进行哈希处理。那么,如何检查Laravel哈希是否对字符串进行哈希处理呢?
范例:

$2y$10$ug8B6Pxs546eQBNICxsEOOH3NgpXjOIo.g4rf1FPZk2xJncWcFUpu

最佳答案

您可以检查长度

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,则将对其进行哈希处理。碰到类似情况的机会可能不零,但这实际上是零。

关于php - 如何检查Laravel Hash是否对字符串进行哈希处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034186/

相关文章:

java - 包括所有特殊字符的正则表达式模式

php - 如果以后的记录无法添加到 Laravel 5,如何回滚新记录?

php - mysql_fetch 不显示

PHP:将年中的第几天转换为每月的第几天和一个月

javascript - 在ajax中发送json

javascript - 当我期望一个匹配时,match() 返回包含两个匹配的数组

java - 检查下划线是否包含任何有效的 Windows 文件名字符(下划线和 csv 扩展名除外)

javascript - Laravel 从表单数据保存图像

laravel - 使用Composer在Laravel 4中加载CSS/JS文件吗?

javascript - 如何通过提示另存为对话框来保存网页中的文件?