441 Stimmen

Java-Sicherheit: Unzulässige Schlüsselgröße oder Standardparameter?

Ich hatte bereits eine Frage dazu gestellt, die aber nicht richtig beantwortet wurde und zu nichts führte.

Ich habe also einige Details zum Problem geklärt und würde gerne Ihre Ideen hören, wie ich das Problem beheben kann oder was ich versuchen sollte.

Ich habe Java 1.6.0.12 auf meinem Linux-Server installiert und der folgende Code läuft einwandfrei.

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);
}

Heute habe ich Java 1.6.0.26 auf meinem Server-Benutzer und wenn ich versuche, meine Anwendung auszuführen, erhalte ich die folgende Ausnahme. Ich vermute, dass es etwas mit der Java-Installationskonfiguration zu tun hat, da es in der ersten Version funktioniert, in der späteren Version aber nicht mehr.

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

Zeile 25 ist: c.init(Cipher.DECRYPT_MODE, secretKeySpec);

Anmerkungen:
* java.security auf dem Server 1.6.0.12 java-Verzeichnis stimmt fast vollständig mit dem 1.6.0.26 java.security-Datei. In der ersten Datei gibt es keine zusätzlichen Anbieter.
* Die vorherige Frage lautet aquí .

1voto

Sulabh Jain Punkte 342

Das Standard-JDK unterstützt aufgrund amerikanischer Beschränkungen nur die Verschlüsselung mit 128-Bit-Schlüsseln. Um also die Verschlüsselung mit 256 Bit langen Schlüsseln zu unterstützen, müssen wir die local_policy.jar y US_export_policy.jars en $JAVA_HOME/java-8-oracle/jre/lib/security Ordner, sonst gibt es:

java.security.InvalidKeyException: Unzulässige Schlüsselgröße oder Standard

1voto

Ruslan Sheremet Punkte 161

Stellen Sie sicher, dass Sie die neueste Version von JDK/JRE .

In meinem Fall hatte ich JCE in den JRE-Ordner gelegt, aber das hat nicht geholfen. Es passierte, weil ich mein Projekt direkt aus der IDE (mit JDK) ausgeführt habe.

Dann habe ich mein JDK und JRE auf die neueste Version (1.8.0_211) aktualisiert und das Problem war verschwunden.

Weitere Einzelheiten: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8170157

0voto

Fzum Punkte 1245

Sie müssen dorthin gehen

/jdk1.8.0_152 | /jre /lib | /security | java.security und entkommentieren Sie die

#crypto.policy=unlimited

zu

crypto.policy=unlimited

0voto

Ishaq Khan Punkte 729

Laden Sie die JCE-Dateien von untenstehendem Link für Java 6 herunter

https://www.oracle.com/java/technologies/jce-6-download.html

Laden Sie die JCE-Dateien von untenstehendem Link für Java 8 herunter

https://www.oracle.com/java/technologies/javase-jce8-downloads.html

Kopieren Sie die vom obigen Link heruntergeladenen Dateien und gehen Sie in das Verzeichnis des installierten JDK

/Users/ik/jdk1.8.0_72/jre/lib/security

Fügen Sie die Dateien aus dem Verzeichnis ein und ersetzen Sie sie. Starten Sie Ihre Anwendung neu und der Fehler muss behoben sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X