package com.ruoyi.common.utils; import org.apache.commons.codec.binary.Base64; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SignatureException; public class EncryptUtil { /** * 加密数字签名(基于HMACSHA1算法) * * @param encryptText * @param encryptKey * @return * @throws SignatureException */ public static String HmacSHA1Encrypt(String encryptText, String encryptKey) throws SignatureException { byte[] rawHmac = null; try { byte[] data = encryptKey.getBytes("UTF-8"); SecretKeySpec secretKey = new SecretKeySpec(data, "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(secretKey); byte[] text = encryptText.getBytes("UTF-8"); rawHmac = mac.doFinal(text); } catch (InvalidKeyException e) { throw new SignatureException("InvalidKeyException:" + e.getMessage()); } catch (NoSuchAlgorithmException e) { throw new SignatureException("NoSuchAlgorithmException:" + e.getMessage()); } catch (UnsupportedEncodingException e) { throw new SignatureException("UnsupportedEncodingException:" + e.getMessage()); } String oauth = new String(Base64.encodeBase64(rawHmac)); return oauth; } public final static String MD5(String pstr) { char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] btInput = pstr.getBytes(); MessageDigest mdInst = MessageDigest.getInstance("MD5"); mdInst.update(btInput); byte[] md = mdInst.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { // i = 0 byte byte0 = md[i]; // 95 str[k++] = md5String[byte0 >>> 4 & 0xf]; // 5 str[k++] = md5String[byte0 & 0xf]; // F } return new String(str); } catch (Exception e) { return null; } } }