mirror of
https://gitee.com/dromara/sa-token.git
synced 2026-02-27 16:50:24 +08:00
@@ -3,7 +3,6 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>cn.dev33</groupId>
|
<groupId>cn.dev33</groupId>
|
||||||
<artifactId>sa-token-parent</artifactId>
|
<artifactId>sa-token-parent</artifactId>
|
||||||
|
|||||||
@@ -154,6 +154,12 @@ public interface SaErrorCode {
|
|||||||
/** sha256 加密异常 */
|
/** sha256 加密异常 */
|
||||||
int CODE_12113 = 12113;
|
int CODE_12113 = 12113;
|
||||||
|
|
||||||
|
/** sha384 加密异常 */
|
||||||
|
int CODE_121131 = 121131;
|
||||||
|
|
||||||
|
/** sha512 加密异常 */
|
||||||
|
int CODE_121132 = 121132;
|
||||||
|
|
||||||
/** AES 加密异常 */
|
/** AES 加密异常 */
|
||||||
int CODE_12114 = 12114;
|
int CODE_12114 = 12114;
|
||||||
|
|
||||||
|
|||||||
@@ -91,20 +91,8 @@ public class SaSecureUtil {
|
|||||||
public static String sha1(String str) {
|
public static String sha1(String str) {
|
||||||
try {
|
try {
|
||||||
str = (str == null ? "" : str);
|
str = (str == null ? "" : str);
|
||||||
MessageDigest md = MessageDigest.getInstance("SHA1");
|
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
|
||||||
byte[] b = str.getBytes();
|
return getShaHexString(str, messageDigest);
|
||||||
md.update(b);
|
|
||||||
byte[] b2 = md.digest();
|
|
||||||
int len = b2.length;
|
|
||||||
String strA = "0123456789abcdef";
|
|
||||||
char[] ch = strA.toCharArray();
|
|
||||||
char[] chs = new char[len * 2];
|
|
||||||
for (int i = 0, k = 0; i < len; i++) {
|
|
||||||
byte b3 = b2[i];
|
|
||||||
chs[k++] = ch[b3 >>> 4 & 0xf];
|
|
||||||
chs[k++] = ch[b3 & 0xf];
|
|
||||||
}
|
|
||||||
return new String(chs);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new SaTokenException(e).setCode(SaErrorCode.CODE_12112);
|
throw new SaTokenException(e).setCode(SaErrorCode.CODE_12112);
|
||||||
}
|
}
|
||||||
@@ -120,25 +108,67 @@ public class SaSecureUtil {
|
|||||||
try {
|
try {
|
||||||
str = (str == null ? "" : str);
|
str = (str == null ? "" : str);
|
||||||
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
|
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
|
||||||
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
|
return getShaHexString(str, messageDigest);
|
||||||
|
|
||||||
byte[] bytes = messageDigest.digest();
|
|
||||||
StringBuilder builder = new StringBuilder();
|
|
||||||
String temp;
|
|
||||||
for (byte aByte : bytes) {
|
|
||||||
temp = Integer.toHexString(aByte & 0xFF);
|
|
||||||
if (temp.length() == 1) {
|
|
||||||
builder.append("0");
|
|
||||||
}
|
|
||||||
builder.append(temp);
|
|
||||||
}
|
|
||||||
|
|
||||||
return builder.toString();
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new SaTokenException(e).setCode(SaErrorCode.CODE_12113);
|
throw new SaTokenException(e).setCode(SaErrorCode.CODE_12113);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sha384加密
|
||||||
|
*
|
||||||
|
* @param str 指定字符串
|
||||||
|
* @return 加密后的字符串
|
||||||
|
*/
|
||||||
|
public static String sha384(String str) {
|
||||||
|
try {
|
||||||
|
str = (str == null ? "" : str);
|
||||||
|
MessageDigest messageDigest = MessageDigest.getInstance("SHA-384");
|
||||||
|
return getShaHexString(str, messageDigest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new SaTokenException(e).setCode(SaErrorCode.CODE_121131);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sha512加密
|
||||||
|
*
|
||||||
|
* @param str 指定字符串
|
||||||
|
* @return 加密后的字符串
|
||||||
|
*/
|
||||||
|
public static String sha512(String str) {
|
||||||
|
try {
|
||||||
|
str = (str == null ? "" : str);
|
||||||
|
MessageDigest messageDigest = MessageDigest.getInstance("SHA-512");
|
||||||
|
return getShaHexString(str, messageDigest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new SaTokenException(e).setCode(SaErrorCode.CODE_121132);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sha (Secure Hash Algorithm)加密 公共方法
|
||||||
|
*
|
||||||
|
* @param str 指定字符串
|
||||||
|
* @param messageDigest 消息摘要
|
||||||
|
* @return 加密后的字符串
|
||||||
|
*/
|
||||||
|
private static String getShaHexString(String str, MessageDigest messageDigest) {
|
||||||
|
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
|
||||||
|
byte[] bytes = messageDigest.digest();
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
String temp;
|
||||||
|
for (byte aByte : bytes) {
|
||||||
|
temp = Integer.toHexString(aByte & 0xFF); // 获取无符号整数十六进制字符串
|
||||||
|
if (temp.length() == 1) {
|
||||||
|
builder.append("0"); // 确保每个字节都用两个字符表示
|
||||||
|
}
|
||||||
|
builder.append(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* md5加盐加密: md5(md5(str) + md5(salt))
|
* md5加盐加密: md5(md5(str) + md5(salt))
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
@@ -149,6 +179,15 @@ public class SaSecureUtil {
|
|||||||
return md5(md5(str) + md5(salt));
|
return md5(md5(str) + md5(salt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sha256加盐加密: sha256(sha256(str) + sha256(salt))
|
||||||
|
* @param str 字符串
|
||||||
|
* @param salt 盐
|
||||||
|
* @return 加密后的字符串
|
||||||
|
*/
|
||||||
|
public static String sha256BySalt(String str, String salt) {
|
||||||
|
return sha256(sha256(str) + sha256(salt));
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------- 对称加密 AES -----------------------
|
// ----------------------- 对称加密 AES -----------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user