AES 前端加密,后端解密不出来,代码如下

1 . 前端js
用的CryptoJS

 function encrypt(word){
    var iv=CryptoJS.enc.Utf8.parse('0000000000000000'); //感觉这个iv不对
    var key = CryptoJS.enc.Utf8.parse("SZSCjDcHtlnrYPzD");
    var srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv:iv,
      mode:CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
}

2 . 后端java

public final static int AES_KEY_LENGTH = 32;
private final static byte[] IV = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
private final static String ALGORITHM = "AES";
private final static String MODE = "AES/CBC/PKCS5Padding";

//解密部分
public static byte[] decrypt(byte[] decryptKey, byte[] decryptBytes) throws Exception {
    IvParameterSpec zeroIv = new IvParameterSpec(IV);

    SecretKeySpec key = new SecretKeySpec(decryptKey, ALGORITHM);

    Cipher cipher = Cipher.getInstance(MODE);
    cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);

    return cipher.doFinal(decryptBytes);
}

算法一脸懵逼,懂的大神给看看错在哪,不甚感激~

阅读 5k
1 个回答

已解决,iv为空字符串就行了

推荐问题