Ich versuche, eine Verschlüsselung/Entschlüsselung einzurichten. Der Verschlüsselungsmodus ist ECB, der den AES-Algorithmus verwendet. Für die Verschlüsselung verwende ich CryptoJS als Teil meiner Anwendung. Der folgende Code wird verwendet, um zu verschlüsseln:Verschlüsseln von Daten mit CryptoJS und Entschlüsseln mit 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);
Für die Entschlüsselung, ich bin der AESCipherService von Shiro mit entschlüsseln. Ich habe den folgenden Code:
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());
}
ich die folgende Ausnahme erhalten:
EntschlüsselnVerursacht durch: javax.crypto.IllegalBlockSizeException: Eingangslänge Vielfaches von 16 sein muss, wenn mit gepolstertem Chiffre
Alles falsch, was ich auf der Verschlüsselungsseite mache?
danke. das hat wie ein Zauber funktioniert. Ich werde meinen Code ändern, um den CBC-Modus anstelle von EZB zu verwenden. –