之前我曾经提出过这个问题,但并没有得到正确的答案,也没有取得任何进展。
现在我已经澄清了问题的一些细节,非常想听听您对如何解决这个问题或应该尝试什么的建议。
我的Linux服务器上安装了Java 1.6.0.12,下面的代码可以完美运行。
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);
}
今天我在我的服务器上安装了Java 1.6.0.26,但当我尝试运行我的应用程序时,出现以下异常。 我猜测这可能与Java安装配置有关,因为它在早期版本中可以正常工作,但在后来的版本中却不能正常工作。
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
第25行是:
c.init(Cipher.DECRYPT_MODE, secretKeySpec);
注意:
* 服务器上的java.security中的1.6.0.12版本几乎完全与1.6.0.26版本的java.security文件相匹配。第一个版本中没有额外的提供程序。
* 上一个问题在这里。
Caused by: java.security.InvalidKeyException: Illegal key size
(不包含“或默认参数”)。 - EagleEye208