sha加密包含sha1、sha224、ssh256、ssh384、ssh512
package com.itee.common.core.adapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* sha加密
*/
public class ShaAdapter {
/**
* log日志
*/
private static final Logger log = LoggerFactory.getLogger(ShaAdapter.class);
/**
* sha1加密
* @param s
* @return
*/
public static String sha1(String s) {
try {
MessageDigest sha = MessageDigest.getInstance("SHA1");
byte[] digest = sha.digest(s.getBytes(StandardCharsets.UTF_8));
StringBuilder build = new StringBuilder();
for (int i = 0; i < digest.length; i++) {
/**
* %02x:转小写字母
* %02X:转大写字母
*/
build.append(String.format("%02x", digest[i]));
}
return build.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
/**
* sha224加密
* @param str 要加密的字符串
* @return 加密后的字符串
*/
public static String sha224(String str) {
MessageDigest messageDigest;
String encodeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-224");
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
encodeStr = byte2Hex(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encodeStr;
}
/**
* sha256加密
* @param str 要加密的字符串
* @return 加密后的字符串
*/
public static String sha256(String str) {
MessageDigest messageDigest;
String encodeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
encodeStr = byte2Hex(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encodeStr;
}
/**
* sha256加密
* @param str 要加密的字符串
* @return 加密后的byte数组
*/
public static byte[] getSha256(String str) {
MessageDigest messageDigest;
byte[] encodeStr = null;
try {
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
encodeStr = messageDigest.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encodeStr;
}
/**
* sha256加密 将byte转为16进制
* @param bytes 字节码
* @return 加密后的字符串
*/
private static String byte2Hex(byte[] bytes) {
StringBuilder stringBuilder = new StringBuilder();
String temp;
for (byte aByte : bytes) {
temp = Integer.toHexString(aByte & 0xFF);
if (temp.length() == 1) {
stringBuilder.append("0");//1得到一位的进行补0操作
}
stringBuilder.append(temp);
}
return stringBuilder.toString();
}
/**
* sha384加密
* @param str 要加密的字符串
* @return 加密后的字符串
*/
public static String sha384(String str) {
MessageDigest messageDigest;
String encodeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-384");
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
encodeStr = byte2Hex(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encodeStr;
}
/**
* sha512加密
* @param str 要加密的字符串
* @return 加密后的字符串
*/
public static String sha512(String str) {
MessageDigest messageDigest;
String encodeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-512");
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
encodeStr = byte2Hex(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encodeStr;
}
}