此处使用SecretKeySpec 构造 key,用Mac对象初始化构造的key对象,
/ * hmac+签名算法 加密 * @param content 内容 * @param charset 字符编码 * @param key 加密秘钥 * @param hamaAlgorithm hamc签名算法名称:例如HmacMD5,HmacSHA1,HmacSHA256 * @return */ public static String getHmacSign(String content, String charset,String key,String hamaAlgorithm){ byte[] result = null; try { //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 SecretKeySpec signinKey = new SecretKeySpec(key.getBytes(), hamaAlgorithm); //生成一个指定 Mac 算法 的 Mac 对象 Mac mac = Mac.getInstance(hamaAlgorithm); //用给定密钥初始化 Mac 对象 mac.init(signinKey); //完成 Mac 操作 byte[] rawHmac; rawHmac = mac.doFinal(content.getBytes(charset)); result = Base64.encodeBase64(rawHmac); } catch (NoSuchAlgorithmException e) { System.err.println(e.getMessage()); } catch (InvalidKeyException e) { System.err.println(e.getMessage()); } catch (IllegalStateException | UnsupportedEncodingException e) { System.err.println(e.getMessage()); } if (null != result) { return new String(result); } else { return null; } } public static void main(String[] args) { String hmacSign = getHmacSign("testjoiaj", "UTF-8", "gail", "HmacMD5"); String hmacSign2 = getHmacSign("testjoiaj", "UTF-8", "gail", "HmacSHA1"); String hmacSign3 = getHmacSign("testjoiaj", "UTF-8", "gail", "HmacSHA256"); System.out.println(hmacSign); System.out.println(hmacSign2); System.out.println(hmacSign3); }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232237.html原文链接:https://javaforall.net
