gpt4 book ai didi

java - 意外的 keccak 输出

转载 作者:行者123 更新时间:2023-12-01 14:47:34 24 4
gpt4 key购买 nike

我正在尝试各种 Keccak java 的实现。 This implementation是迄今为止最有希望的,但是我得到了奇怪的结果。测试用例定义为here (尽管我根据测试 vector 直接使用十六进制字符串)。当前(和正确的)测试 vector 定义为 here绿色(我提供链接是为了方便,以避免任何人从网站下载官方测试 vector zip 文件)。

首先,我不明白测试 vector 中“len”和“msg”字段之间的相关性。 “Len”应该是“msg”的长度(以位为单位)。例如,'len' = 5,'msg' =“48”(十六进制字符串),我认为2个十六进制数字= 1字节,即8位。我错过了什么?

对于以下长度的输入,我仅获得正确的摘要(根据测试 vector ):16、24、40、56、64、72、112 和 128(其中长度对应于“len”)测试 vector 中的字段,输入是“msg”)。但是,我获得的长度值:32、48、80、88、96、104 与测试 vector 不匹配。任何人都可以对为什么会发生这种情况做出有根据的猜测吗?当然,如果有人能推荐一个不同的 Java 实现,我将不胜感激。

最佳答案

看这里的例子:LINK

或者只是将此方法添加到“Keccak”类中:

/**
* @param string original string to get kekkan hash from it
* @return hash or null
*/
public static String generateHash(String string) {
Keccak keccak = new Keccak();
String hex;
try {
hex = keccak.getHexStringByByteArray(string.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
return null;
}
// 576,64 is values for sha-512
return keccak.getHash(hex, 576, 64);
}

关于java - 意外的 keccak 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262280/

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