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

如何生成Solr密码哈希?解析哈希类型及Bash生成方法

Solr BasicAuthPlugin 密码哈希类型及Bash生成方法

哈希类型说明

你提到的特殊哈希是Solr自定义的PBKDF2WithHmacSHA256编码格式,它并非独立的哈希算法,而是将算法参数与生成结果打包后的自定义编码:

  • 二进制结构包含三部分:前4字节为固定迭代次数(大端字节序,默认10000)、中间16字节是随机生成的salt值、最后32字节是通过PBKDF2WithHmacSHA256算法生成的密钥(SHA256输出长度固定为32字节)
  • 最终将这整段二进制数据做Base64编码,得到你看到的特殊字符串。

Bash生成方法

方法一:使用Solr内置工具(推荐)

部署Solr的环境通常已配置Java,直接用Solr自带的工具类生成最可靠:

  1. 替换命令中的/path/to/solr为你的Solr实际安装路径,SolrRocks为目标密码:
PASSWORD="SolrRocks"
java -cp "/path/to/solr/server/lib/*:/path/to/solr/server/solr-webapp/webapp/WEB-INF/lib/*" org.apache.solr.security.Sha256Hash "$PASSWORD"
  1. 执行后会输出类似结果,第二个字段就是security.json中需要的哈希值:
solr $shapw$10000$a1b2c3d4...$e5f6g7h8...

方法二:手动用OpenSSL实现(不推荐,易出错)

若无法使用Solr类库,可通过OpenSSL命令组合生成,需严格匹配参数:

  • 生成16字节随机salt:
    SALT=$(openssl rand -hex 16)
    
  • 生成PBKDF2密钥(迭代10000次,SHA256算法):
    KEY=$(openssl pkcs5 -pbkdf2 -in <(echo -n "SolrRocks") -salt "$SALT" -iter 10000 -sha256 -out - | xxd -p -c 32)
    
  • 转换迭代次数为4字节大端二进制:
    ITER=$(printf "%08x" 10000 | xxd -r -p)
    
  • 拼接二进制数据并Base64编码:
    COMBINED="$ITER$(echo -n "$SALT" | xxd -r -p)$(echo -n "$KEY" | xxd -r -p)"
    HASH=$(echo -n "$COMBINED" | base64)
    
  • 最终得到的HASH值即可用于security.json配置。

内容的提问来源于stack exchange,提问作者HubertNNN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:50:35