gpt4 book ai didi

java - 使用 Oracle STANDARD_HASH,在 JAVA 中重现哈希

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:49 24 4
gpt4 key购买 nike

我在 Oracle 中使用 STANDARD_HASH('input','SHA256') 函数用它们的相对哈希值填充记录。

这可以通过连接到 Oracle 来重现:

select STANDARD_HASH('1234','SHA256') 
from dual
Table X    
Column 1, Column 1-hashed
1234, sha512hashresult
1234, sha512hashresult
1234, sha512hashresult
1234, sha512hashresult

现在的问题是什么;我必须在 JAVA 中做什么才能准确地重现 Oracle 中由 STANDARD_HASH 生成的哈希值?有人对此有经验吗?

注意;由于某种原因,推荐的 Oracle 散列函数上没有种子。有谁知道默认种子或如何解决这个问题?

背景:我想做什么?使用 Oracle-Default-Tools 填充 Oracle 中的表,并使用 Java 程序接收输入、对其进行哈希处理并在表中选择正确的记录。

我不想要的;有人告诉我如何以不同的方式实现它,我正是需要这种方式,否则可以节省您的时间

最佳答案

您可以使用标准库来做到这一点。使用 java.security.MessageDigest使用算法 SHA-256:

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import javax.xml.bind.DatatypeConverter;
...

String input = "1234";
byte[] hashBytes = MessageDigest.getInstance("SHA-256")
.digest(input.getBytes(StandardCharsets.UTF_8));
String hash = DatatypeConverter.printHexBinary(hashBytes);
System.out.println(hash);

这将打印 03AC674216F3E15C761EE1A5E255F067953623C8B388B4459E13F978D7C846F4STANDARD_HASH 将返回相同的字符串。

How to convert a byte array to a hex string in Java? 中所述,有更快的方法将 byte[] 转换为十六进制字符串,但是 DatatypeConverter.printHexBinary() 有成为标准库一部分的好处,应该是适用于大多数用例。

关于java - 使用 Oracle STANDARD_HASH,在 JAVA 中重现哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46175376/

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