Pra*_*Vij 6 security solr salt
我正在尝试在本地实现 Apache Solr 的基本身份验证。在Apache Solr Sample security.json 的屏幕截图(来源: https: //lucene.apache.org/solr/guide/7_2/basic-authentication-plugin.html#basic-authentication-plugin)中3,给出了A user called 'solr', with a password 'SolrRocks' has been defined.。此外,假定密码被添加为 sha256(密码+盐)哈希值。但盐没有在任何地方指定(据我检查)。
我需要盐才能为 security.json 创建新密码。盐在哪里指定?我尝试用谷歌搜索答案,但找不到任何东西。如果你能帮助我那就太好了。谢谢。
由于我不是密码学专家,我可能会遗漏一些东西。我所知道的是,盐是与密码连接的随机位,因此具有相同密码的人最终不会得到相同的哈希值(如果这些人的盐不同)。
更新
在这个链接中,作者描述了在Apache Solr文档中找不到加密方法的问题。他查看了Solr代码,发现Sha256AuthenticationProvider.java中的sha256()才是真正计算哈希的函数。
链接中还提供了可下载的 jar 文件,可用于生成 Apache Solr 所需的密码。
但我仍然对 Solr 如何匹配密码感到困惑。给定的 jar 文件在不同的运行中为相同的密码字符串提供不同的哈希值(因为它随机生成盐)。如果我将密码设置为fQfWaUyrgXoHPT9OiubY5zh8A4fL0D+r8592Eo1+Gbo= M7Vz0pRkjliKbPKHfP0qcMiALD16ujPQYPOu7SVG6Z8=(一次运行 jar 文件时获得的“SolrRocks”的加密版本),然后我尝试使用密码“SolrRocks”发送一个curl 请求,Solr 如何知道它是相同的密码?
如果有人能解释这一点那就太好了。谢谢。
空格之前的部分是哈希密码,空格之后的部分是盐:
System.out.println(Base64.encodeBase64String(btPass) + " " +
Base64.encodeBase64String(salt));
Run Code Online (Sandbox Code Playgroud)
这意味着 Solr 可以从后一部分中提取盐,将其添加到参考文献中算法中给出的传递中,并将结果与存储在哈希部分中的部分进行比较。