You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BCRYPT哈希的字符池范围是什么?PHP环境下技术问询

BCRYPT哈希(PHP password_hash生成)的合法字符集

首先明确:PHP通过password_hash($password, PASSWORD_BCRYPT)生成的BCRYPT哈希,其字符集遵循BCRYPT特有的Base64编码规则,并非任意ASCII字符,也不包含你提到的*、\这类字符。

合法字符范围

BCRYPT哈希仅包含以下字符:

  • 符号:$、.、/
  • 数字:0-9
  • 大写字母:A-Z
  • 小写字母:a-z

依据说明

PHP的PASSWORD_BCRYPT实现底层依赖crypt()函数的BCRYPT算法,而该算法使用的是修改版Base64编码:

  • 替换标准Base64的+为.,保留/
  • 编码后的字符严格从上述集合中选取,不会出现=、¬或其他UTF-8字符
  • 完整BCRYPT哈希格式为$2y$xx$[22字符salt][31字符哈希],整个字符串的每一位都属于上述字符集

正则清理示例

若要清理字符串,仅保留合法的BCRYPT哈希字符,可使用如下正则:

$cleanedHash = preg_replace('/[^$.\/0-9A-Za-z]/', '', $inputString);

补充说明

PHP环境下password_hash生成的BCRYPT哈希不会触发旧版crypt的特殊场景(如*0/*1返回值),因此无需考虑*这类额外字符。

内容的提问来源于stack exchange,提问作者Mm-Art-In

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:48:42