Boa noite pessoal, estou testando AES 256 CBC. Segue meu source:
public void testarMODOCBC() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, InvalidAlgorithmParameterException {
String dado_original = "O Vetor de Inicialização ou Initialization Vector, em inglês";
KeyGenerator kg = KeyGenerator.getInstance("AES");
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
Key key = kg.generateKey();
c.init(Cipher.ENCRYPT_MODE, key);
byte input[] = dado_original.getBytes();
byte criptografado[] = c.doFinal(input);
System.out.println(asHex(criptografado));
byte iv[] = c.getIV();
IvParameterSpec dps = new IvParameterSpec(iv);
c.init(Cipher.DECRYPT_MODE, key, dps);
byte output[] = c.doFinal(criptografado);
System.out.println(new String(output));
}
Eu estava precisando dos seguintes:
-
Que a chave seja gerada através do processo Password Based Key Derivation Function (PBKDF) utilizando SHA256.
-
Que os valores dos vetor de inicialização(IV) sejam setados por mim.
-
Que os valores retornados na string gerada do vetor “output” respeitasse os acentos e caracteres especiais da mensagem original.
Alguém pode me dar algumas informações neste sentido para eu continuar com a implementação? Desde já agradeço todas as respostas.