我希望在数据库中使用regex (在PowerGrep中)查找bcrypt哈希字符串。
尝试过这个正则表达式:
{?A-Za-z_0-9.{60}}?但没有找到匹配的人。Bcrypt散列长度为60个字符,以"$2y$“开头。
示例:
$2y$15$nK/B6u765645/lo0867h56546v/BnH5U5g45Aj67u67nMVtrhryt6发布于 2015-07-14 21:08:24
更新
因为在y值旁边可能有a或b,所以您可以使用
^\$2[ayb]\$.{56}$见regex在线演示。详细信息
^ -字符串的开始\$ -一个文本$字符(它应该在regex模式中转义以匹配文本$字符,否则,它将表示字符串的结尾)2 -a 2 char[ayb] -与指定集合中的任意一个字符匹配的字符类\$ -a $ char.{56} -除换行字符之外的任何56个字符(如果不使用符合POSIX的正则表达式引擎,它将匹配任何字符;若要匹配普通NFA引擎中的任何字符,请用[\s\S]替换.或使用相应的DOTALL标志)$ -字符串的末端。原始答案
regex -- {?A-Za-z_0-9.{60}}? --不是在字符类[...]中,而是在可选的大括号中,因此它们显示了文字字符的序列。看你的regex演示看我的意思。
您可以使用以下正则表达式:
^\$2y\$.{56}$请参阅演示
^匹配字符串的开头,\$2y\$匹配$2y$ (因为$是一个特殊字符,需要转义),.{56}是其余56个字符。
发布于 2015-08-24 19:23:25
作为上面@stribizhev回答的一个补充。在野外你可能遇到的bcrypt哈希有几个品种,所以你可能需要修改regex来捕获它们。这些变化如下:
散列的“算法标识符”部分可以包括:
"2" -- BCrypt的第一个版本,它有一个小的安全漏洞,通常不再使用。"2a" --一些实现遇到了一个非常罕见的安全缺陷。"2y" -特定于crypt_blowfish BCrypt实现的格式,除名称外,与"2a“完全相同。"2b" -官方BCrypt算法的最新修订^\$2[ayb]\$.{56}$好像对我有用
有关bcrypt哈希:有人能解释BCrypt是如何验证哈希的吗?的分解,请参见此处
发布于 2018-03-08 23:44:55
用这个:
^\$2[aby]?\$\d{1,2}\$[.\/A-Za-z0-9]{53}$解释:
\$2[aby]?\$ -匹配所使用的算法。有效值为2,2a,2y和2b。\d{1,2}\$ -匹配成本,或多少轮,即4到31之间的整数(包括在内)。[.\/A-Za-z0-9]{53} -匹配salt和hash,其中salt构成前22个字符,散列密码构成最后31个字符。https://stackoverflow.com/questions/31417387
复制相似问题