SHA512客户端握手实现

时间:2013-04-17 16:28:59

标签: 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”类型。

我只是想知道是否有一个与此函数等效的close java。它似乎应该在Java.Security类中,但我在查找hmac函数和实现时遇到了麻烦。

1 个答案:

答案 0 :(得分:2)

javax.crypto相关的API和与加密相关的功能存在于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默认使用)。你很可能不得不调整逻辑,但这是一个很好的起点。

相关问题