SHA512客户端握手实现

问题描述:

我试图做一个与服务器api交互的hmac实现,我唯一需要去掉的例子是一个python代码片段。不幸的是,我从来没有碰过python,而我的Java有点生疏。SHA512客户端握手实现

蛇皮示例代码包括功能:

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

其中秘密被从服务器检索到的解码后的散列被连接到, hash_data是要发送的数据, 和SHA512是“消息摘要”在转换为Java时键入。

我只是想知道是否有一个相当于这个函数的关闭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默认使用)。你很可能不得不调整逻辑,但它是一个很好的起点。