Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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 什么是密钥HMAC(哈希消息身份验证码)_Java_Web Services_Restful Authentication - Fatal编程技术网

Java 什么是密钥HMAC(哈希消息身份验证码)

Java 什么是密钥HMAC(哈希消息身份验证码),java,web-services,restful-authentication,Java,Web Services,Restful Authentication,什么是密钥HMAC(哈希消息身份验证码)?以及如何使用java在web服务中编写HMAC?HMAC是用于验证消息真实性的摘要。与md5签名不同,它是使用只有您和接收方知道的密钥生成的,因此不可能被第三方伪造 为了生成一个,您需要使用一些java.security类。试试这个: public byte[] generateHMac(String secretKey, String data, String algorithm /* e.g. "HmacSHA256" */) { Secr

什么是密钥HMAC(哈希消息身份验证码)?以及如何使用java在web服务中编写HMAC?

HMAC是用于验证消息真实性的摘要。与md5签名不同,它是使用只有您和接收方知道的密钥生成的,因此不可能被第三方伪造

为了生成一个,您需要使用一些java.security类。试试这个:

public byte[] generateHMac(String secretKey, String data, String algorithm /* e.g. "HmacSHA256" */) {

    SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(), algorithm);

    try {
        Mac mac = Mac.getInstance(algorithm);
        mac.init(signingKey);

        return mac.doFinal(data.getBytes());
    }
    catch(InvalidKeyException e) {
        throw new IllegalArgumentException("invalid secret key provided (key not printed for security reasons!)");
    }
    catch(NoSuchAlgorithmException e) {
        throw new IllegalStateException("the system doesn't support algorithm " + algorithm, e);
    }
}

HMAC是用于验证消息真实性的摘要。与md5签名不同,它是使用只有您和接收方知道的密钥生成的,因此不可能被第三方伪造

为了生成一个,您需要使用一些java.security类。试试这个:

public byte[] generateHMac(String secretKey, String data, String algorithm /* e.g. "HmacSHA256" */) {

    SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(), algorithm);

    try {
        Mac mac = Mac.getInstance(algorithm);
        mac.init(signingKey);

        return mac.doFinal(data.getBytes());
    }
    catch(InvalidKeyException e) {
        throw new IllegalArgumentException("invalid secret key provided (key not printed for security reasons!)");
    }
    catch(NoSuchAlgorithmException e) {
        throw new IllegalStateException("the system doesn't support algorithm " + algorithm, e);
    }
}

对于你问题的第一部分,constult对于你问题的第一部分,constult