java - SHA512客户端握手实现

标签 java python api hmac sha512

我正在尝试制作一个与服务器 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/

相关文章:

javascript - 请求失败返回代码 400。服务器响应被 chop - Google 脚本

JavaFX 2 : background and Platform. runLater vs 任务/服务

python - 递归调用复杂度

api - REST API 子资源

java - 如何取回 Kafka 生产者和消费者配置(Java API)?

python 返回列表中的重复项

java - JPA 实体,识别业务键

java - Java 中范围和包的问题

java - 编译 ant build.xml 时出现错误 "Package doesn' t 存在

python - 使用vim执行git提交操作时发生错误: Error detected while processing function PyKiteEvent