gpt4 book ai didi

java - SHA512客户端握手实现

转载 作者:行者123 更新时间:2023-11-30 04:25:16 25 4
gpt4 key购买 nike

我正在尝试制作一个与服务器 api 交互的 hmac 实现,我必须使用的唯一示例是一个 python 片段。不幸的是我从来没有接触过Python并且我的Java有点生疏。

Python示例代码包含以下函数:

handshake = str(hmac.new(secret, hash_data, sha512))

其中,secret 是从所连接的服务器检索到的已解码哈希值,hash_data是要发送的数据,sha512转换为Java后是“MessageDigest”类型。

我只是想知道是否有一个与此函数等效的封闭java。看起来它应该在 Java.Security 类中,但我找不到 hmac 函数和实现。

最佳答案

与密码学相关的 API 和函数位于 javax.crypto 中,不是java.security .

我不懂 Python,但鉴于您的描述和所显示方法的文档,您需要遵循以下内容:

final Charset charset = Charset.forName("ASCII");
final String secret = "mykey";
final String data = "A message to be turned to gibberish";
final String algorithm = "HmacSHA512";

byte[] keyBytes = secret.getBytes(charset);
SecretKeySpec signingKey = new SecretKeySpec(keyBytes, algorithm);

Mac mac = Mac.getInstance(algorithm);
mac.init(signingKey);

byte[] hashed = mac.doFinal(data.getBytes(charset));
System.out.println(new String(hashed, charset));

代码假设字节和字符串转换基于 ASCII(我相信 Python 默认使用它)。您很可能必须调整逻辑,但这是一个很好的起点。

关于java - SHA512客户端握手实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16065370/

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