Bu konuda daha önce bir soru sormuştum, ama doğru cevaplanmadı ve hiçbir yere götürmedi.
Bu yüzden sorunla ilgili birkaç ayrıntıyı açıkladım ve bunu nasıl düzeltebileceğim ya da neyi denemem gerektiğine dair fikirlerinizi duymak istiyorum.
Ben Java 1.6.0.12 benim Linux sunucu ve sadece mükemmel çalışır aşağıdaki kodu yüklü.
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);
}
Bugün Java 1.6.0.26'yı sunucu kullanıcıma yükledim ve uygulamamı çalıştırmaya çalıştığımda aşağıdaki istisnayı alıyorum. Benim tahminim, Java kurulum yapılandırmasıyla bir ilgisi var çünkü ilkinde çalışıyor, ancak sonraki sürümde çalışmıyor.
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
Satır 25 :
c.init(Cipher.DECRYPT_MODE, secretKeySpec);
Notlar:
* Sunucunun 1.6.0.12 java dizinindeki java.security , 1.6.0.26 java.security dosyasıyla neredeyse tamamen eşleşir . Birincisinde ek sağlayıcı yok.
* Bir önceki soru burada .
Caused by: java.security.InvalidKeyException: Illegal key size
Java 8'de ("veya varsayılan parametreler olmadan")