package com.xzx.gc.common.utils;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.crypto.asymmetric.KeyType;
|
import cn.hutool.crypto.asymmetric.RSA;
|
import cn.hutool.crypto.digest.MD5;
|
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
|
import cn.hutool.crypto.symmetric.SymmetricCrypto;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.util.MD5Util;
|
import lombok.experimental.UtilityClass;
|
import lombok.extern.slf4j.Slf4j;
|
|
@UtilityClass
|
@Slf4j
|
public class SecurityUtil {
|
|
/**
|
* AES对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。
|
* 默认使用 :AES/ECB/PKCS5Padding
|
* @param salt 必须是16位的
|
* @param content 明文内容
|
* @return 加密后的密码
|
*/
|
public String encrypt(String salt,String content){
|
//构建
|
SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, salt.getBytes());
|
//加密
|
String encrypt = aes.encryptBase64(content);
|
return encrypt;
|
}
|
|
|
/**
|
*AES 解密
|
* @param salt 盐
|
* @param content 加密的内容
|
* @return
|
*/
|
public String decrypt(String salt,String content){
|
try {
|
SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, salt.getBytes());
|
return aes.decryptStr(content);
|
} catch (Exception e) {
|
log.warn("解密失败:"+content);
|
}
|
return null;
|
}
|
|
|
|
/** RSA私钥加密
|
* 此算法用了默认补位方式为RSA/ECB/PKCS1Padding
|
* @param content 加密内容
|
*/
|
public String encrypt(String content){
|
RSA rsa = new RSA(Constants.RSA_PRIVATE_SECRET,null);
|
String encrypt = rsa.encryptBase64(content, KeyType.PrivateKey);
|
return encrypt;
|
}
|
|
|
/** RSA私钥解密
|
* 此算法用了默认补位方式为RSA/ECB/PKCS1Padding
|
* @param content 加密内容
|
*/
|
public String decrypt(String content){
|
RSA rsa = new RSA(Constants.RSA_PRIVATE_SECRET,null);
|
String decrypt = rsa.decryptStr(content, KeyType.PrivateKey);
|
return decrypt;
|
}
|
|
/**
|
* rsa解密获取aes秘钥再aes解密
|
* @param key
|
* @param content
|
* @return
|
*/
|
public String decryptRsaAndAes(String key,String content){
|
RSA rsa = new RSA(Constants.RSA_PRIVATE_SECRET,null);
|
String decrypt = rsa.decryptStr(key, KeyType.PrivateKey);
|
String decrypt1 = decrypt(decrypt, content);
|
return decrypt1;
|
}
|
|
|
/**
|
* rsa解密在aes加密
|
* @param key
|
* @param content
|
* @return
|
*/
|
public String encryptRsaAndAes(String key,String content){
|
RSA rsa = new RSA(Constants.RSA_PRIVATE_SECRET,null);
|
String decrypt = rsa.decryptStr(key, KeyType.PrivateKey);
|
String decrypt1 = encrypt(decrypt, content);
|
return decrypt1;
|
}
|
|
public static void main(String[] args) {
|
|
// String s= RandomUtil.randomString(16);
|
// System.out.println(s);
|
// String encrypt = SecurityUtil.encrypt(Constants.PWD_DECRET, "123456");
|
// System.out.println(encrypt);
|
// String decrypt = SecurityUtil.decrypt("00h03FS62fp8M2aB", "N8HyB9al97EwglufJRMAaQ==");
|
// System.out.println(decrypt);
|
// String extra = commonDto.getExtra();
|
// extra = StrUtil.removePrefix(extra, ",");
|
// String decrypt = SecurityUtil.decrypt(Constants.PWD_DECRET, extra);
|
// String decrypt = SecurityUtil.decrypt(Constants.PWD_DECRET, "2H4ogswi8lD/sBVq6JzcsWp1Vluj3LtWbnX9TMkbnrBmmrObGni/nQC54sQyoykKWuciPhE2nmStLOXfu9+HSSz5ef5ajHHyrHdOtx/z+MNVjX+uJEAIOTlsgw81tO7eRtXPgANPcAJimwfDpIPuBQ==");
|
// System.out.println(decrypt);
|
|
// String decrypt = SecurityUtil.decrypt("RzqwBtGG9ZOJn3o4", "4PkjauEZjGUs8BxlYFBUjMw6mHNmpqxTL40JIkUXiEc=");
|
// System.out.println(decrypt);
|
|
// String decrypt = SecurityUtil.decrypt(Constants.PWD_DECRET, "4BF4E3B0A15961E715EC60AD9336D3A2");
|
// System.out.println(decrypt);
|
|
// MD5.create().
|
|
// String decrypt = SecurityUtil.decrypt("7864bL9Z4t9c4c67", "N/1oNOsbGVsdEDaQO55Lp7j2alng4VgHX89zl6uVhJ0OD6tsljQZUoxVpRUTVC8v");
|
// System.out.println(decrypt);
|
|
String decrypt = SecurityUtil.decrypt("9dg220xrdaqoduck", "CQdAYNgxGyJw0f3DuyCvMQ==");
|
System.out.println(decrypt);
|
|
// String encrypt = SecurityUtil.encrypt(Constants.PWD_DECRET, "888888");
|
// System.out.println(encrypt);
|
//
|
// encrypt = SecurityUtil.encrypt(Constants.PWD_DECRET, "123456");
|
// System.out.println(encrypt);
|
}
|
|
}
|