huanghongfa
2021-09-02 177249c76aeea0b4bf8d8816d4994e3b445b45ce
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/helper/AESUtil.java
@@ -1,9 +1,5 @@
package com.panzhihua.common.model.helper;
import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
@@ -13,17 +9,28 @@
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
/**
 * AES 工具类
 */
public class AESUtil {
    private static SecretKeySpec secretKey;
    private static byte[] key;
    /**
     * AES 256 加密
     * @param strToEncrypt 要加密的字符串
     * @param secKey 秘钥
     * @param salt 盐
     *
     * @param strToEncrypt
     *            要加密的字符串
     * @param secKey
     *            秘钥
     * @param salt
     *            盐
     * @return 加密后的字符串
     */
    public static String encrypt256(String strToEncrypt, String secKey, String salt) {
@@ -38,8 +45,7 @@
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec);
            return Base64.getEncoder()
                    .encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)));
            return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)));
        } catch (Exception e) {
            System.out.println("Error while encrypting: " + e.toString());
        }
@@ -48,9 +54,13 @@
    /**
     * AES 256 解密
     * @param strToDecrypt 要解密的字符串
     * @param secKey 秘钥
     * @param salt 盐
     *
     * @param strToDecrypt
     *            要解密的字符串
     * @param secKey
     *            秘钥
     * @param salt
     *            盐
     * @return 解密后的字符串
     */
    public static String decrypt256( String strToDecrypt, String secKey, String salt) {
@@ -72,49 +82,48 @@
        return null;
    }
    private static SecretKeySpec secretKey;
    private static byte[] key;
    public static void setKey(String myKey)
    {
    public static void setKey(String myKey) {
        MessageDigest sha = null;
        try {
            key = myKey.getBytes("UTF-8");
            key = myKey.getBytes(StandardCharsets.UTF_8);
            sha = MessageDigest.getInstance("SHA-1");
            key = sha.digest(key);
            key = Arrays.copyOf(key, 16);
            secretKey = new SecretKeySpec(key, "AES");
        }
        catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        catch (UnsupportedEncodingException e) {
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
    /**
     * AES 128(base64)加密
     * @param strToEncrypt 要加密的字符串
     * @param secret 秘钥
     *
     * @param strToEncrypt
     *            要加密的字符串
     * @param secret
     *            秘钥
     * @return 加密后的字符串
     */
    public static String encrypt128(String strToEncrypt, String secret) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, BadPaddingException, IllegalBlockSizeException {
    public static String encrypt128(String strToEncrypt, String secret)
        throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException,
        BadPaddingException, IllegalBlockSizeException {
        setKey(secret);
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
        return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)));
    }
    /**
     * AES 128(base64) 解密
     * @param strToDecrypt 要解密的字符串
     * @param secret 秘钥
     *
     * @param strToDecrypt
     *            要解密的字符串
     * @param secret
     *            秘钥
     * @return 解密后的字符串
     */
    public static String decrypt128(String strToDecrypt, String secret) throws NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, InvalidKeyException {
    public static String decrypt128(String strToDecrypt, String secret) throws NoSuchPaddingException,
        NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, InvalidKeyException {
        setKey(secret);
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
@@ -143,7 +152,6 @@
        String[] originalString = new String[]{"51011234567892013", "13612345678", "四川省成都市高新区", "四川省成都市高新"};
        String key = "5165465461dsfas";
        Arrays.stream(originalString).forEach(os ->{
            try {