Había hecho una pregunta sobre esto antes, pero no fue respondida correctamente y no condujo a ninguna parte.
Así que he aclarado algunos detalles sobre el problema y realmente me gustaría escuchar sus ideas sobre cómo podría solucionar esto o qué debería intentar.
Tengo Java 1.6.0.12 instalado en mi servidor Linux y el siguiente código se ejecuta perfectamente.
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);
}
Hoy instalé Java 1.6.0.26 en el usuario de mi servidor y cuando intento ejecutar mi aplicación, obtengo la siguiente excepción. Supongo que tiene algo que ver con la configuración de instalación de Java porque funciona en la primera, pero no funciona en la versión 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
La línea 25 es:
c.init(Cipher.DECRYPT_MODE, secretKeySpec);
Notas:
* java.security en el directorio java 1.6.0.12 del servidor coincide casi por completo con el archivo java.security 1.6.0.26. No hay proveedores adicionales en el primero.
* La pregunta anterior está aquí .
Caused by: java.security.InvalidKeyException: Illegal key size
(sin los "o parámetros predeterminados") en Java 8