java HmacSHA1 加密

此处使用SecretKeySpec 构造 key,用Mac对象初始化构造的key对象,Mac 允许的加密算法:HmacMD5,HmacSHA1,HmacSHA256

/**
	 * hmac+签名算法 加密
	 * @param content  内容
	 * @param charset  字符编码
	 * @param key	         加密秘钥
	 * @param hamaAlgorithm hamc签名算法名称:例如HmacMD5,HmacSHA1,HmacSHA256 (Mac 对象允许的三个算法)
	 * @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);
	}

猜你喜欢

转载自blog.csdn.net/kzcming/article/details/81560432
今日推荐