Я обрабатываю шифрование с использованием класса Spring 4 Encryptors следующим образом:
String salt = KeyGenerators.string().generateKey();
TextEncryptor textEncryptor = Encryptors.text("MY_SECRET_KEY", salt);
textEncryptor.encrypt(json);
В клиентском javascript я пытаюсь расшифровать с помощью CryptoJS
var uncrypted = CryptoJS.AES.decrypt(serverEncrypted, "MY_SECRET_KEY");
$("#encrypted-data").val(uncrypted);
Я предполагаю, что мне нужно вернуть часть шестнадцатеричной кодировки, но я не понимаю, что нужно сделать.
Пробовал синтаксический анализ перед расшифровкой, но ничего хорошего из этого не вышло.
CryptoJS.enc.Hex.parse(serverEncrypted)
В документации Spring говорится, что текстовый метод будет шифровать шестнадцатеричное значение в «стандартном» методе шифрования, который представляет собой 256-битный AES с использованием PKCS # 5 PBKDF2.
[Ход поиска]
Вот как Spring создает свой ключ:
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, 1024, 256);
SecretKey secretKey = newSecretKey("PBKDF2WithHmacSHA1", keySpec);
SecretKeySpec secretKey = new SecretKeySpec(secretKey.getEncoded(), "AES");
И шифрование:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(iv));
iv — это защищенный случайный массив размером 8 байт, который добавляется к зашифрованным данным.
Cipher
). Вы даже можете использовать PBE, который сочетает в себе оба. - person Artjom B.   schedule 28.04.2015