我一直在寻找BCRYPT特定资源的答案,但在PHP的
crypt
文档中找到了答案。
我有一个问题,需要执行一些REGEX来清理BCRYPT哈希(由PHPpassword_hash
函数使用PASSWORD_BCRYPT
生成(。我想知道理论上可能出现在BCRYPT哈希中的字符,这样REGEX就可以从字符串中删除所有其他字符。
我已经阅读了关于BCrypt的各个部分,它的历史和发展,但我没有遇到过任何地方可以为佳能说明BCrypt哈希可以包含什么。
目前的理解是:
*
、0-9
、a-z
、A-Z
、$
、.
BCRYPT是否包含任何ascii字符?(编辑:没有(我看到它包含了很多,但浏览我能找到的许多BCRYPT哈希并不是一个好的方法。例如,BCRYPT哈希似乎包含=
或¬
或其他一些字符,-为了更好的描述-具有较小的UTF-8定义。
如果这改变了BCRYPT输出散列的方式,那么这就是使用PHP接口。
我在PHP Crypt Function页面上找到了答案:
CRYPT_BLOWFISH-用盐进行BLOWFISH散列如下:$2a$"2x$";或"$2y$";,一个两位数的成本参数$&";,以及字母表中的22个字符"/0-9A-Za-z";。在salt中使用此范围之外的字符将导致crypt((返回零长度字符串
所以这个PHP/BCRYPT哈希将使用以下字符:
CCD_ 13范围。