0
我想要加密/解密设置。加密模式是使用AES算法的ECB。对于加密,我使用CryptoJS作为我的应用程序的一部分。以下代码用于加密:使用CryptoJS加密数据并使用AESCipherService解密
var keyHex = CryptoJS.enc.Utf8.parse(key);
alert(keyHex + ":" + keyHex.toString().length);
var cipherText = CryptoJS.enc.Base64.stringify(CryptoJS.AES.encrypt(inputString, keyHex, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.NoPadding}).ciphertext);
console.log("Encrypted: " + cipherText);
对于解密,我使用Shiro的AESCipherService进行解密。我有以下代码:
public static String decryptUsingShiro(String base64EncodedData, String key) {
byte[] base64decoded = Base64.decodeBase64(base64EncodedData.getBytes());
AesCipherService decryptService = new AesCipherService();
decryptService.setMode(OperationMode.ECB);
decryptService.setPaddingScheme(PaddingScheme.PKCS5);
ByteSource decrypt = decryptService.decrypt(base64decoded, key.getBytes());
return new String(decrypt.getBytes());
}
我得到以下异常:
解密时输入长度必须 为16的倍数造成的:javax.crypto.IllegalBlockSizeException:带衬垫的密码
有什么问题我在加密方面做了什么?
谢谢。像魅力一样工作。我将更改我的代码以使用CBC模式而不是ECB。 –