package cn.mb.cloud.gateway.auth; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class HMACSHA1 { private static final String MAC_NAME = "HmacSHA1"; private static final String ENCODING = "UTF-8"; /* * 展示了一个生成指定算法密钥的过程 初始化HMAC密钥 * * @return * * @throws Exception * * public static String initMacKey() throws Exception { //得到一个 指定算法密钥的密钥生成器 * KeyGenerator KeyGenerator keyGenerator * =KeyGenerator.getInstance(MAC_NAME); //生成一个密钥 SecretKey secretKey * =keyGenerator.generateKey(); return null; } */ /** * 使用 HMAC-SHA1 签名方法对对encryptText进行签名 * * @param encryptText * 被签名的字符串 * @param encryptKey * 密钥 * @return * @throws Exception */ public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception { byte[] data = encryptKey.getBytes(ENCODING); // 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 Mac mac = Mac.getInstance(MAC_NAME); SecretKey secretKey = new SecretKeySpec(data, MAC_NAME); // 生成一个指定 Mac 算法 的 Mac 对象 // 用给定密钥初始化 Mac 对象 mac.init(secretKey); byte[] text = encryptText.getBytes(ENCODING); // 完成 Mac 操作 return mac.doFinal(text); } // public static void main(String[] args) { // // String encryptText = "123"; // String encryptKey = "adc"; // try { // byte[] b = HmacSHA1Encrypt(encryptText, encryptKey); // String str = HashKit.toHex(b); // String str2 = new String(Base64.getEncoder().encodeToString(b)); // } catch (Exception e) { // e.printStackTrace(); // } // } }