当前位置: 首页 > 知识库问答 >
问题:

如何在Java代码中计算SHA-256 Tomcat 8 DataSourceRealm兼容的哈希值?

柳俊健
2023-03-14
<Context> 
  <ResourceLink global="jdbc/demo" name="jdbc/demo" type="javax.sql.DataSource" />
  <Realm className="org.apache.catalina.realm.DataSourceRealm"
         digest="SHA-256"
         dataSourceName="jdbc/demo"
         userTable="users" userNameCol="user_name" userCredCol="user_pass"
         userRoleTable="user_roles" roleNameCol="role_name"/>
</Context> 
C:\>"%CATALINA_HOME%\bin\digest" -a SHA-256 -s 0 hotdog
hotdog:$1$35602208e86ac7d6b3a63780a9538a9d1763a646d5b9f3930a0548e0983e0ca6

...

ij> update users set user_pass='$1$35602208e86ac7d6b3a63780a9538a9d1763a646d5b9f3930a0548e0983e0ca6' where user_name='demouser';
1 row inserted/updated/deleted

现在我可以成功登录了。

现在,我如何以编程方式(在Java中)生成SHA-256哈希密码插入数据库?我见过许多生成SHA-256散列和将字节字符串转换为十六进制的示例。但是在使用摘要工具时,让我感到困惑的部分是散列的开始。它总是以“$”开头生成哈希值。当以编程方式转换哈希并用十六进制编码时,输出中永远不会包含'$'字符(因为十六进制中没有'$',只有0-F)。但是Tomcat似乎可以很好地处理摘要工具输出(包括美元符号)。

共有1个答案

有宏邈
2023-03-14

消化器的结果以如下格式显示:

密码:salt$iterations$digest

例如,密码“1234”、20个字符盐和10次迭代将产生:

 类似资料:
  • 问题内容: 我一直在使用CryptoJS(即)库在前端进行SHA-3哈希处理。(请参阅http://crypto- js.googlecode.com/svn/tags/3.1.2/build/rollups/sha3.js ) 我想知道是否有任何Java库等效项?但是到目前为止,我还没有找到任何东西。Java SHA-3示例也不是很多。 具有SHA-3,但在Eclipse下不可见。另外,我不确定

  • 问题内容: 我正在尝试在Android中获取字符串的SHA256。 这是我要匹配的PHP代码: 现在,在Java中,我正在尝试执行以下操作: 但这会打印出来:“ a42yzk3axdv3k4yh98g8” 我在这里做错了什么? 归功于erickson: 问题答案: PHP函数意味着它需要一个字节字符串并将其编码为十六进制数字。 在Java代码中,您尝试获取一堆随机字节,并使用平台的默认字符编码将它

  • 我刚刚讨论了散列码的概念,遇到了一行:

  • 问题内容: 我编写了以下程序来计算Java中字符串的SHA-256哈希值: 好吧,那很好。在下一步中,我想以一种接受文件并计算其哈希值的方式来开发它。我的解决方案是在字符串数组中读取整个文件,然后在该字符串数组上调用方法。但是有两个问题: 我不知道如何将整个文件读入数组?目前,我认为我必须逐行阅读并在数组中添加新行! 上面的方法需要大文件存储空间! 这是我当前的程序来读取文件: 似乎没有一种方法可

  • 问题内容: 我需要计算大文件(或其一部分)的SHA-256哈希。我的实现工作正常,但比C 的CryptoPP计算要慢得多(25分钟vs. 30 GB文件的10分钟)。我需要的是在C 和Java中执行时间相似,因此散列几乎可以同时准备好。我也尝试了Bouncy Castle的实现,但是它给了我相同的结果。这是我如何计算哈希值: 问题答案: 我的解释可能无法解决您的问题,因为它很大程度上取决于您的实际

  • 问题内容: 我使用Node.js + passport设置了一个用于用户身份验证的站点。 现在,我需要迁移到Golang,并需要使用保存在db中的用户密码进行身份验证。 Node.js加密代码为: 如何使用Golang制作与Node.js bcrypt相同的哈希字符串? 问题答案: 我相信使用golang.org/x/crypto/bcrypt软件包将是: 工作示例: