gpt4 book ai didi

java - .Net 中生成的 SHA1 哈希的 java 等价物是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:43 29 4
gpt4 key购买 nike

我正在尝试对 soap 网络服务进行身份验证,但我在 java 中生成的 SHA1 哈希不起作用,但使用 .Net 生成的哈希有效。

此 .Net 代码的 java 等价物是什么?

//.网

var token = "H?OIgSJ35~LKJ:9~~7&sUtHDeKAv*O@is?cEwV[}!i@u%}";
var shaProvider = new SHA1Managed();
var rawKey = Encoding.Unicode.GetBytes(token);
var rawHash = shaProvider.ComputeHash(rawKey);
var signature = BitConverter.ToString(rawHash).Replace("-", "").ToLower();

产生的哈希值:a508a29efeea2821e519fcbf64f164dd5d672233

//Java - 这是我使用 commons-codec-1.4.jar 尝试的

String token = "H?OIgSJ35~LKJ:9~~7&sUtHDeKAv*O@is?cEwV[}!i@u%}";
MessageDigest cript = null;
try {
cript = MessageDigest.getInstance("SHA1");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cript.reset();
cript.update(token.getBytes());
String password = new String(Hex.encodeHex(cript.digest()));
System.out.println(password);

产生的哈希值:88e7c8fc13ac75e8efc8d0c00182caa6dc087093

最佳答案

我的猜测是 token.getBytes() 使用的编码与 Encoding.Unicode.GetBytes(token) 不同,因为您不太可能拥有UTF-16 Little Endian 作为默认字符集。如果将其更改为 token.getBytes(StandardCharsets.UTF_16LE) 会怎样?

关于java - .Net 中生成的 SHA1 哈希的 java 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009377/

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