我有一个函数负责使用
HmacSHA256
算法计算哈希值,并为其提供有效负载。此函数生成的最终输出与此处计算的输出不匹配(https://www.javainuse.com/hmac)
我的函数如下所示
public String generateHmacKey (String sftpResponseObj){
log.warn("SFTP response: (" + sftpResponseObj + ")");
String encodingType = "HmacSHA256";
String hash = "";
try{
//Get an algorithm
Mac sha256Mac = Mac.getInstance(encodingType);
// Create secret key
SecretKeySpec secretKeySpec = new SecretKeySpec(this.secretKey.getBytes("UTF-8"), encodingType);
log.warn("Secret key: (" + secretKeySpec + ")");
//Assign secret key
sha256Mac.init(secretKeySpec);
//JSONObject obj = new JSONObject(sftpResponseObj);
//log.warn("Stringified SFTP response: (" + obj + ")");
// Generate Base64 encoded string
Base64 base64 = new Base64();
hash = Base64.encodeBase64String(sha256Mac.doFinal(sftpResponseObj.getBytes("UTF-8")));
log.warn("Output: (" + hash + ")");
}catch(NoSuchAlgorithmException e){
e.printStackTrace();
}catch(InvalidKeyException e){
e.printStackTrace();
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}
return hash;
}
上述哈希的输出是
59CqKqY8sXfc1L2lauqh6QYDmp83USyGpbpJgrOQBuo=
我传递给函数的密钥是
ZzVhq3sQkjdRsEy
上述函数中的sftpResponseObj如下
{"id":"ffafb7a3-1701-496f-b5b5-390ad5b7f954","success":"1","comment":"\nWarning#: 20965 Msg: WARNING - RR CODE NOT SET UP FOR EXT - SYSTEM HAS CHANGED EXT TO Panel: AP.KU Info: CLIENT ID 6CH4D8 \nAccount 6CH4D8S opened successfully.\nAccount 6CH4D8W opened successfully.\n","client_id":"6CH4D8"}
使用在线工具(https://www.javainuse.com/hmac)验证后,我得到了不同的输出,请看下面的截图