Tôi đã hỏi một câu hỏi về điều này sớm hơn, nhưng nó không được trả lời đúng và không dẫn đến đâu.
Vì vậy, tôi đã làm rõ một vài chi tiết về vấn đề này và tôi thực sự muốn nghe ý kiến của bạn về cách tôi có thể khắc phục vấn đề này hoặc tôi nên thử điều gì.
Tôi đã cài đặt Java 1.6.0.12 trên máy chủ Linux của mình và đoạn mã bên dưới chạy hoàn hảo.
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);
}
Hôm nay tôi đã cài đặt Java 1.6.0.26 trên người dùng máy chủ của mình và khi tôi thử chạy ứng dụng của mình, tôi gặp ngoại lệ sau. Tôi đoán là nó có liên quan đến cấu hình cài đặt Java vì nó hoạt động trong phiên bản đầu tiên, nhưng không hoạt động trong phiên bản sau.
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
Dòng 25 là:
c.init(Cipher.DECRYPT_MODE, secretKeySpec);
Lưu ý:
* java.security trên thư mục java 1.6.0.12 của máy chủ khớp gần như hoàn toàn với tệp java.security 1.6.0.26 . Không có nhà cung cấp bổ sung trong cái đầu tiên.
* Câu hỏi trước đây là đây .
Caused by: java.security.InvalidKeyException: Illegal key size
(không có "hoặc tham số mặc định") trong Java 8