Аутентифицированное шифрование требует, чтобы мы использовали некоторый принятый стандарт для шифрования и аутентификации сообщения.Таким образом, мы оба зашифровываем сообщение и вычисляем MAC-адрес сообщения, чтобы убедиться, что оно не было подделано.
В этом вопросе описан способ выполнения усиления и шифрования на основе пароля:*
/* Derive the key, given password and salt. */
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(password, salt, 65536, 256);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
/* Encrypt the message. */
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);
AlgorithmParameters params = cipher.getParameters();
byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
byte[] ciphertext = cipher.doFinal("Hello, World!".getBytes("UTF-8"));
Но, насколько я могу судить, это не вычисляет MAC-адреса в зашифрованном тексте и поэтому будет небезопасным.Каков принятый стандарт для выполнения аутентифицированного шифрования в Java?