我的要求是,我们需要在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生成的。
任何人都可以帮我解决这个问题。
或如果您有任何工作示例,请提供一次
提前致谢。
答案 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");