gpt4 book ai didi

java - Java (Scala) 中此散列代码的等效 SQL 代码是什么

转载 作者:行者123 更新时间:2023-11-29 14:34:20 25 4
gpt4 key购买 nike

我有以下对用户密码进行哈希处理的 Scala 代码:

val digest = MessageDigest.getInstance("SHA-256")
val hash = new String(digest.digest (password.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8).getBytes

我想在我的 PostgresSQL 服务器中使用 SQL 执行相同的操作。

我试过了

digest(password, 'sha256') 

没有用,我猜这是因为 java 中的 getBytes 调用,我们正在消化字符串的字节而不是字符串本身(如果它有任何意义的话!)

对于 Postgress SQL,getBytes 的等价物是什么?如果它存在?

谢谢。

语境我只是想进行一个查询,该查询将手动插入一个用户以便于测试,它正在插入但我无法登录。我的查询和 scala 代码生成的摘要不一样。

最佳答案

val hash = new String(digest.digest (password.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8).getBytes

这是错误的。您正在正确地对密码进行哈希处理,然后出于某种原因将字节转换为字符串……只是为了再次将其转换回字节。这是不必要的、愚蠢的,而且很可能会破坏事物。

val hash = digest.digest (password.getBytes(StandardCharsets.UTF_8))

这是你的哈希值(以字节为单位)。

要模仿您损坏的代码,请尝试 convert_from(digest(password, 'sha256'), 'UTF8')::bytea 并查看您是否得到相同的结果。

关于java - Java (Scala) 中此散列代码的等效 SQL 代码是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47268875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com