gpt4 book ai didi

java - xdmp :hash64 equivalent in Java

转载 作者:行者123 更新时间:2023-11-29 08:45:50 29 4
gpt4 key购买 nike

我正在尝试使用 XQuery 和 Java 生成相同的 64 位整数。目前,我正在使用 XQuery (MarkLogic) 并使用 xdmp:hash64生成 64 位数字的函数。

例如,xdmp:hash64('123') 将为我们提供 6570863421667228143

现在我想用 Java 生成相同的内容。我想知道是否有人可以提供一些见解

谢谢

最佳答案

xdmp:hash64 算法是专有的,具有未知的属性。您可以将每个输入从 Java 发送到 MarkLogic,询问它哈希是什么。但我会寻找一种在两种环境中都可用的哈希算法。

根据您的需要,SHA-2 可能是合适的选择:https://docs.marklogic.com/xdmp:sha512xdmp:sha384xdmp:sha256

您要求像 xdmp:hash64 这样的 64 位数字产生:64 位无符号长整数。 SHA-2 函数返回十六进制或 base64 字符串,但十六进制很容易处理:

xdmp:hex-to-integer(xdmp:sha512('fubar'))

如果抛出 XDMP-FIPSWEAKHASH,那么您的集群处于 FIPS 模式。在这种情况下,您必须通过添加 key 来使用 HMAC 变体:

xdmp:hex-to-integer(xdmp:hmac-sha512('s3cr!t', 'fubar'))
=> 18446744073709551615

对于等效的 Java 代码 SHA2 password hashing in java可能有帮助。只要您在两侧使用相同的算法和 key ,就可以了。

请注意,使用无符号 64 位长整型可能不适合 Java,因为 Java 没有将无符号 64 位长整型作为基本类型。我知道 JDK8 提供了一些帮助。但是,比较十六进制字符串可能会像其他任何解决方案一样简单高效。

关于java - xdmp :hash64 equivalent in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25457943/

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