package com.farriver.bwf.common.utilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Base64; public class EncryptUtil { private final Logger logger = LoggerFactory.getLogger(EncryptUtil.class); public static String md5Encrypt(final String content) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { } BigInteger digest = new BigInteger(md5.digest(content.getBytes())); //32位 return digest.toString(16); } public static byte[] base64Encrypt(final String content) { return Base64.getEncoder().encode(content.getBytes()); } public static byte[] base64Decrypt(final byte[] encoderContent) { return Base64.getDecoder().decode(encoderContent); } public static String SHAEncrypt(final String content) { try { MessageDigest sha = MessageDigest.getInstance("SHA"); byte[] sha_byte = sha.digest(content.getBytes()); StringBuffer hexValue = new StringBuffer(); for (byte b : sha_byte) { //将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作,转换为int类型的正整数。 String toHexString = Integer.toHexString(b & 0xff); hexValue.append(toHexString.length() == 1 ? "0" + toHexString : toHexString); } return hexValue.toString(); } catch (Exception e) { } return ""; } public static byte[] HMACEncrypt(final String key, final String content) { try { SecretKey secretKey = new SecretKeySpec(key.getBytes(), "MAC"); Mac mac = Mac.getInstance(secretKey.getAlgorithm()); mac.init(secretKey); return mac.doFinal(content.getBytes()); } catch (Exception e) { } return null; } }