[英]What's the equivalent SQL code for this hashing code in Java (Scala)
我有以下Scala代码对用户密码进行哈希处理:
val digest = MessageDigest.getInstance("SHA-256")
val hash = new String(digest.digest (password.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8).getBytes
我想在使用SQL的PostgresSQL服务器中执行相同的操作。
我努力了
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
,看看是否得到相同的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.