簡體   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