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); } }