package com.work.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class SecurityUtil {
/**
* base64编码
*
* @param source
* 原始数据输入
* @return Base64编码字符串
*/
public static String getBase64Encoding(byte[] source) {
byte[] encodingBytes = Base64.getEncoder().encode(source);
return new String(encodingBytes);
}
/**
* base64解码
*
* @param source
* base64解码
* @return Base64解码字符串
*/
public static String getBase64Decoding(byte[] source) {
byte[] decodingBytes = Base64.getDecoder().decode(source);
return new String(decodingBytes);
}
/**
* 信息摘要
*
* @param algorithm
* 信息摘要算法种类
* @param source
* 信息输入源
* @return 摘要信息
* @throws NoSuchAlgorithmException
*/
public static String getMD(String algorithm, byte[] source) throws NoSuchAlgorithmException {
if (algorithm == null) {
algorithm = "MD5";
}
MessageDigest md = MessageDigest.getInstance(algorithm);
byte[] result = md.digest(source);
return fromBytesToHex(result);
}
/**
* 字节转十六进制
*
* @param resultBytes
* 输入源
* @return 十六进制字符串
*/
public static String fromBytesToHex(byte[] resultBytes) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < resultBytes.length; i++) {
if (Integer.toHexString(0xFF & resultBytes[i]).length() == 1) {
builder.append("0").append(Integer.toHexString(0xFF & resultBytes[i]));
} else {
builder.append(Integer.toHexString(0xFF & resultBytes[i]));
}
}
return builder.toString();
}
}