¿Cuál es el tamaño de la clave para PBEWithMD5AndTripleDES?

Estoy tratando de reemplazar PBEWithMD5AndDES con PBEWithMD5AndTripleDES en el código existente. Hasta ahora, estoy usando la misma frase de contraseña que estaba usando antes, y recibo esta excepción:

java.security.InvalidKeyException: tamaño de clave ilegal

Busqué en línea y vi que DES usa una clave de 64 bits y TripleDES usa una clave de 128 bits. No tengo claros los detalles de cómo se usa mi frase de contraseña para generar una clave, y no estoy seguro de dónde buscar para entender esto completamente. Mi frase de contraseña tiene 260 caracteres de longitud. Intenté duplicar la longitud, pero obtengo la misma Excepción.

Estoy generando un PBEKeySpec a partir de mi frase de contraseña, con una sal de 8 bytes y un recuento de iteraciones de 12. Veo que hay otro constructor que toma un argumento keyLength, pero la documentación lo describe como "derivado" y no lo hago ' No entiendo eso. Tengo la idea de que necesito modificar el recuento de iteraciones y / o proporcionar un argumento keyLength, pero no quiero hacerlo ciegamente sin comprender completamente lo que estoy haciendo.

Aquí está el resumen básico del código que estoy usando actualmente:

String passphrase = ...
byte[] salt = ...
int iterationCount = 12;
String algorithm = "PBEWithMD5AndTripleDES";
KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance(algorithm).generateSecret(keySpec);
Cipher cipher = Cipher.getInstance(key.getAlgorithm());
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
cipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
byte[] encoded = cipher.doFinal(data);

Respuestas a la pregunta(4)

Su respuesta a la pregunta