Eu fiz uma pergunta sobre isso antes, mas ela não foi respondida corretamente e não levou a lugar algum.
Portanto, esclareço alguns detalhes sobre o problema e gostaria muito de ouvir suas idéias sobre como corrigir isso ou o que devo tentar.
Eu tenho o Java 1.6.0.12 instalado no meu servidor Linux e o código abaixo funciona perfeitamente.
String key = "av45k1pfb024xa3bl359vsb4esortvks74sksr5oy4s5serondry84jsrryuhsr5ys49y5seri5shrdliheuirdygliurguiy5ru";
try {
Cipher c = Cipher.getInstance("ARCFOUR");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "ARCFOUR");
c.init(Cipher.DECRYPT_MODE, secretKeySpec);
return new String(c.doFinal(Hex.decodeHex(data.toCharArray())), "UTF-8");
} catch (InvalidKeyException e) {
throw new CryptoException(e);
}
Hoje instalei o Java 1.6.0.26 no meu usuário do servidor e quando tento executar meu aplicativo, recebo a seguinte exceção. Meu palpite seria que ele tem algo a ver com a configuração da instalação Java, porque funciona na primeira, mas não funciona na versão posterior.
Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
at my.package.Something.decode(RC4Decoder.java:25) ~[my.package.jar:na]
... 5 common frames omitted
A linha 25 é:
c.init(Cipher.DECRYPT_MODE, secretKeySpec);
Notas:
* java.security no diretório java 1.6.0.12 do servidor corresponde quase completamente ao arquivo java.security 1.6.0.26 . Não há fornecedores adicionais no primeiro.
* A pergunta anterior está aqui .
Caused by: java.security.InvalidKeyException: Illegal key size
(sem os "ou parâmetros padrão") no Java 8