Java HmacSHA512 生成(与PHP中hash_hmac一样)

PHP中有一个hash_hmac函数,hash_hmac(‘sha512’, $data, $key),可以用sha512算法给data通过key生成一个摘要,但Java中没有直接可用的方法。

/**
 * 与php中的hash_hmac('sha512', $data, $key)功能相同
 * @param data
 * @param key
 * @return
 */
private String hmacSHA512(String data,String key) {
    String result = "";
    byte[] bytesKey = key.getBytes();
    final SecretKeySpec secretKey = new SecretKeySpec(bytesKey, "HmacSHA512");
    try {
        Mac mac = Mac.getInstance("HmacSHA512");
        mac.init(secretKey);
        final byte[] macData = mac.doFinal(data.getBytes());
        byte[] hex = new Hex().encode(macData);
        result = new String(hex, "ISO-8859-1");
    } catch (NoSuchAlgorithmException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    } catch (InvalidKeyException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }
    return result;
}

需要apache的commons-codec包.