繁体   English   中英

Java(Scala)中此哈希代码的等效SQL代码是什么

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM