Zadałem pytanie na ten temat wcześniej, ale nie otrzymałem właściwej odpowiedzi i nigdzie nie zaprowadziłem.
Wyjaśniłem więc kilka szczegółów na temat problemu i naprawdę chciałbym usłyszeć wasze pomysły na to, jak mogę to naprawić lub co powinienem spróbować.
Mam Java 1.6.0.12 zainstalowaną na moim serwerze Linux, a poniższy kod działa idealnie.
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);
}
Dzisiaj zainstalowałem Javę 1.6.0.26 na moim serwerze i kiedy próbuję uruchomić aplikację, otrzymuję następujący wyjątek. Domyślam się, że ma to związek z konfiguracją instalacji Java, ponieważ działa w pierwszej, ale nie działa w późniejszej wersji.
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
Linia 25 to:
c.init(Cipher.DECRYPT_MODE, secretKeySpec);
Uwagi:
* java.security w katalogu java na serwerze 1.6.0.12 jest prawie całkowicie zgodna z plikiem java.security w wersji 1.6.0.26. W pierwszym nie ma żadnych dodatkowych dostawców.
* Poprzednie pytanie jest tutaj .
Caused by: java.security.InvalidKeyException: Illegal key size(bez „lub parametrów domyślnych”) w Javie 8