javascript中的字符串加密和java中的解密

时间:2014-10-05 06:21:44

标签: java javascript encryption

我的要求是,我们需要在java脚本中加密密码字符串,并且应该用Java解密。对于此要求,我使用以下代码。但我得到了像

这样的错误
  

javax.crypto.BadPaddingException:pad块损坏       在org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(未知来源)       在javax.crypto.Cipher.doFinal(Cipher.java:2087)

我的代码段是

java script code:

   var encryptedPassword = CryptoJS.AES.encrypt(password, key, {

    });

Java代码是......

        Cipher c = Cipher.getInstance("AES/ECB/PKCS7Padding");
        c.init(Cipher.DECRYPT_MODE, key);
        byte[] decordedValue = BASE64DecoderStream.decode(encryptedData.getBytes());
        byte[] decValue = c.doFinal(decordedValue);
        decryptedValue = new String(decValue); 

这里的密钥是用Java生成的。

任何人都可以帮我解决这个问题。

或如果您有任何工作示例,请提供一次

提前致谢。

1 个答案:

答案 0 :(得分:-1)

根据我的观察,模式和填充不一样。 我没有测试过,但请试试这个,

on javascript

<script>
    var blockAndPadding = { mode: CryptoJS.mode.CBC , padding: CryptoJS.pad.NoPadding};
    var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase", blockAndPadding);
</script>

在java端,将方法参数更改为以下内容。

Cipher c = Cipher.getInstance("AES/CBC/NoPadding");