Angularjs JS加密和Java解密-错误

Angularjs JS加密和Java解密-错误,angularjs,encryption,cryptography,ibm-mobilefirst,Angularjs,Encryption,Cryptography,Ibm Mobilefirst,我有一个用例,需要用JS加密,用Java解密。我尝试了两种方法: 基于 对于这种情况,我得到一个javax.crypto.BadPaddingException:给定最后一个块未正确填充的错误 通过引用各种源代码编写的代码。 对于加密: var salt = CryptoJS.lib.WordArray.random(16); var salt_hex = CryptoJS.enc.Hex.stringify(salt); var iv = CryptoJS.lib.Wo

我有一个用例,需要用JS加密,用Java解密。我尝试了两种方法:

基于 对于这种情况,我得到一个javax.crypto.BadPaddingException:给定最后一个块未正确填充的错误

通过引用各种源代码编写的代码。 对于加密:

    var salt = CryptoJS.lib.WordArray.random(16);
    var salt_hex = CryptoJS.enc.Hex.stringify(salt);
    var iv = CryptoJS.lib.WordArray.random(16);
    var iv_hex = CryptoJS.enc.Hex.stringify(iv);
    var key = CryptoJS.PBKDF2(secret, salt, {
        keySize : 256 / 32,
        iterations : 1
    });

    var encrypted = CryptoJS.AES.encrypt(value, key, { iv : iv });
我将“salt”、“iv”和“encrypted”传递给JS代码。在这里,我使用

SecretKey key = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
plaintext = new String(cipher.doFinal(msg), "UTF-8"); 
在本例中,我得到一个java.security.InvalidKeyException:在本例中,密钥大小非法

我的设置是:

JS端是用AngularJS服务编写的 服务器java代码通过MobileFirst服务器中的适配器调用
任何关于我哪里出错的指示

您提供的代码似乎没有问题:

检查PBKDF2是否在两端产生相同的密钥。 检查是否正确地将十六进制解码为字节,如果需要,则反之亦然。 检查您当前是否安装了AES-256的无限强度策略,以及。由于美国军事出口限制,使用JCE时默认情况下不启用AES-256。 谢谢,谢谢你的回答。我已经毫无运气地完成了你提到的所有步骤

选项2中的代码现在正在运行。它工作的一个可能原因是机器重新启动。否则,我想不出还有什么变化会影响它