1.前端导入crypto-js.js

  aesEncrypt: function  (data, key, iv) {
            var key  = CryptoJS.enc.Utf8.parse(key);
            var iv   = CryptoJS.enc.Utf8.parse(iv);
            var encrypted =CryptoJS.AES.encrypt(data,key,{
                iv:iv,
                mode:CryptoJS.mode.CBC,
                padding:CryptoJS.pad.Pkcs7
            });
            //返回的是base64格式的密文
            return encrypted.toString();
        },

2.后端解密




import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.Security;

/**
 * @Description:
 * @ClassName AESUtil
 * @date:
 * @Author: hyc
 */

public class AESUtil {

    /**
     * 密钥算法
     */
    private static final String KEY_ALGORITHM = "AES";


    /**
     * 加密/解密算法 / 工作模式 / 填充方式
     * Java 6支持PKCS5Padding填充方式
     * Bouncy Castle支持PKCS7Padding填充方式
     * "AES/CBC/PKCS5Padding"
     * "AES/CBC/PKCS7Padding"
     */
    private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";

    /**
     * 偏移量=
     */
    private final static String ivParameter = "ABCDEF1234123412";

    /**
     * 密钥
     */
    private static String mkey = "1234123412ABCDEF";

    /**
     * 编码格式
     */
    public static final String ENCODING = "utf-8";


    static {
        //如果是PKCS7Padding填充方式,则必须加上下面这行
        Security.addProvider(new BouncyCastleProvider());
    }

    public static String encrypt(String content){
        try {
            SecretKeySpec key = new SecretKeySpec(mkey.getBytes(), KEY_ALGORITHM);
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE,key, new IvParameterSpec(ivParameter.getBytes()));
            byte[] result = cipher.doFinal(decryptBASE64(content));
            return byteToString(result);
        } catch (Exception e) {
            System.out.println("exception:"+e.toString());
        }
        return null;
    }

    public static String decrypt(String content){
        try {

            SecretKeySpec key = new SecretKeySpec(mkey.getBytes(), KEY_ALGORITHM);
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.DECRYPT_MODE,key, new IvParameterSpec(ivParameter.getBytes()));
            byte[] result = cipher.doFinal(decryptBASE64(content));
            return  byteToString(result);
        } catch (Exception e) {
            System.out.println("exception:"+e.toString());
        }
        return null;
    }

    public static byte[] decryptBASE64(String key) throws Exception {
        return Base64.decodeBase64(key.getBytes());
    }
    public static String encryptBASE64(byte[] key) throws Exception {
        return new String(Base64.encodeBase64(key));
    }
    public static String byteToString(byte[] byte1){
        return new String(byte1);
    }

    public static void main(String[] args) throws Exception {
        String sfz="11111111";
        String enString = AESUtil.encrypt(sfz);
        System.out.println("加密后的数据:" + enString);
        String decrypted = AESUtil.decrypt(enString);
        System.out.println("解密后的数据:" + decrypted);
    }

}

一次过

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐