Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java和PHP之间的HMAC SHA-256差异_Java_Php_Cryptography_Sha256_Hmac - Fatal编程技术网

Java和PHP之间的HMAC SHA-256差异

Java和PHP之间的HMAC SHA-256差异,java,php,cryptography,sha256,hmac,Java,Php,Cryptography,Sha256,Hmac,我正在尝试连接到web服务,我需要加密我的签名 我的java方法如下所示: public String hashMacSha256(String message, String key) throws InvalidKeyException, NoSuchAlgorithmException, UnsupportedEncodingException { Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec

我正在尝试连接到web服务,我需要加密我的签名

我的java方法如下所示:

public String hashMacSha256(String message, String key) throws InvalidKeyException, NoSuchAlgorithmException, UnsupportedEncodingException {
    Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
    SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(),"HmacSHA256");
    sha256_HMAC.init(secret_key);
    String hash = Base64.encodeToString(sha256_HMAC.doFinal(message.getBytes()), Base64.DEFAULT);
    return hash;
}
提供给我的php函数是

$signature=base64_encode(hash_hmac("sha256", trim($xmlReq), $signature_key, True));
Java结果:yn3jxxibispa+smV6zUu6KVNwnm+cbmmsnqabvos0=
Php结果:x7WuslORVY00BtoQuk1dya2bu9pMCpPMunPqPR+3HI4=

当我运行两者来比较结果时,它们是不同的。这是因为java函数错误还是?

首先<代码>$signature\u key==secret\u key?$signature\u key=trim($private\u key.$ApiPassword.$TransactionId);它们都有我之前知道的默认值是的,你知道,我们没有。第二,我问的是键是否相同,而不是两种语言是否都默认为它们的默认值。然后我真的建议大家看看PHP端的
trim()
。在Java中是否有任何值?我没看到,是吗?@pavlos你提供了输出,但你忘了添加输入。