Vue前端密钥AES加密+Java后台AES解密

Vue前端密钥AES加密+Java后台AES解密

Vue前端密钥AES加密

1.前端引入依赖

 npm install crypto-js

2.前端加密代码

在公共方法中或者自己建一个新的js都可以

密钥是我随机生成的16位密钥:生成随机密钥的网站https://suijimimashengcheng.bmcx.com/

import CryptoJS from 'crypto-js'

const key = CryptoJS.enc.Utf8.parse('IOT80YCbsM8ijmBV') // 十六位十六进制数作为密钥
const iv = CryptoJS.enc.Utf8.parse('WKcJeGjIKGTy3VNW') //十六位十六进制数作为密钥偏移量

export function aesDecrypt(word) {
    
    
  let encryptedHexStr = CryptoJS.enc.Hex.parse(word)
  let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr)
  let decrypt = CryptoJS.AES.decrypt(srcs, key, {
    
    
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
  return decryptedStr.toString()
}

export function aesEncrypt(word) {
    
    
  let encrypted = CryptoJS.AES.encrypt(word, key, {
    
    
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  return encrypted.toString()
}
Java后台AES解密

密钥与前端保持一致

//key为16位
    private static String KEY = "IOT80YCbsM8ijmBV";

    private static String IV = "WKcJeGjIKGTy3VNW";


    /**
     * 解密方法
     *
     * @param content 要解密的数据
     * @return 解密的结果
     * @throws Exception
     */
    public static String webDecrypt(String content) {
    
    
        try {
    
    
            SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes("ASCII"), "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            IvParameterSpec iv = new IvParameterSpec(IV.getBytes());
            cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
            byte[] encrypted1 = Base64.decodeBase64(content);//先用bAES64解密
            return new String(cipher.doFinal(encrypted1));
        } catch (Exception ex) {
    
    
            ex.printStackTrace();
        }
        return null;
    }

参考:https://blog.csdn.net/hj_001/article/details/108055295

Guess you like

Origin blog.csdn.net/weixin_43484014/article/details/121289917