package com.hugnew.sps.realm.token; import com.hugnew.core.common.exception.BusinessException; import org.apache.commons.codec.binary.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.util.List; import java.util.Map; /** * Created by Liujishuai on 2015/5/15. */ /** * 消息摘要生成器 */ public class HmacSHA256Utils { private static Logger logger = LoggerFactory.getLogger(HmacSHA256Utils.class); private HmacSHA256Utils(){} public static String digest(String key, String content) { try { logger.info("key:{};content:{}",key,content); Mac mac = Mac.getInstance("HmacSHA256"); byte[] secretByte = key.getBytes("utf-8"); byte[] dataBytes = content.getBytes("utf-8"); SecretKey secret = new SecretKeySpec(secretByte, "HmacSHA256"); mac.init(secret); byte[] doFinal = mac.doFinal(dataBytes); // byte[] hexB = new Hex().encode(doFinal); String oss=Base64.encodeBase64String(mac.doFinal(dataBytes)); logger.info("加密后的字符串:{}" , oss); return oss; // return new String(hexB, "utf-8"); } catch (Exception e) { throw new BusinessException(e); } } public static String digest(String key, Map<String, ?> map) { StringBuilder s = new StringBuilder(); for(Object values : map.values()) { if(values instanceof String[]) { for(String value : (String[])values) { s.append(value); } } else if(values instanceof List) { for(String value : (List<String>)values) { s.append(value); } } else { s.append(values); } } return digest(key, s.toString()); } }