Qual é o tamanho da chave para PBEWithMD5AndTripleDES?

Estou tentando substituir PBEWithMD5AndDES por PBEWithMD5AndTripleDES no código existente. Até agora, estou usando a mesma senha que estava usando antes e recebendo esta exceção:

java.security.InvalidKeyException: tamanho ilegal da chave

Eu olhei online e vi que o DES usa uma chave de 64 bits e o TripleDES usa uma chave de 128 bits. Não tenho certeza dos detalhes de como minha senha é usada para gerar uma chave e não tenho certeza de onde procurar para entender isso completamente. Minha frase secreta tem 260 caracteres. Tentei dobrar o comprimento, mas recebo a mesma exceçã

Eu estou gerando um PBEKeySpec a partir da minha senha, com um sal de 8 bytes e uma contagem de iteração de 12. Vejo que há outro construtor que aceita um argumento keyLength, mas a documentação descreve como "a ser derivado" e não Não entendo isso. Tenho a ideia de que preciso modificar a contagem de iterações e / ou fornecer um argumento keyLength, mas não quero fazer isso cegamente sem entender completamente o que estou fazendo.

Aqui está o esboço básico do código que estou usando atualmente:

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);

questionAnswers(4)

yourAnswerToTheQuestion