2016-03-30 21 views
0

Ich benutze Jasypt mit Bouncycastle in meiner Spring Boot-Anwendung. Ich kann meine Anwendung gut und verschlüsselte Sachen in der Datenbank hinzugefügt werden.EncryptionOperationNotPossibleException in Integrationstests, aber nicht in Anwendung

Wenn jedoch die Unit-Tests laufen, erhalte ich:

org.jasypt.exceptions.EncryptionOperationNotPossibleException: Verschlüsselung eine Ausnahme ausgelöst. Eine mögliche Ursache ist, dass Sie starke Verschlüsselungsalgorithmen verwenden, und Sie haben nicht die Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in dieser Java Virtual Machine

Warum es auf meiner Anwendung und nicht den Integrationstest installiert arbeiten (lädt die gleiche Federkonfiguration wie die Anwendung)? Ich benutze beide von IntelliJ IDEA mit einem Standard Oracle Java 1.8.0_66.

Ich benutze die PBEWithSHA256And256BitAES-CBC-BC algo.

+0

Sind Verwendung mit Gradle gefunden werden? Wenn ja, wurde Bouncycastle für UT oder nur Runtime konfiguriert? –

+0

Ich benutze Maven. Aber Tests und Anwendungen werden beide von IntelliJ ausgeführt. –

Antwort

2

Java wird standardmäßig mit einer maximalen Stärke von 128 Bit geliefert.

Was Sie brauchen, ist eine Reihe von Dateien namens Java-Kryptographie-Erweiterung (JCE) Unlimited Strength Jurisdiction Policy Dateien und ist derzeit unter der Java SE download page. Diese ZIP-Datei enthält einige Richtlinien-JAR-Dateien, die Sie über die bereits vorhandenen Dateien im Verzeichnis {java.home}/jre/lib/security Ihrer JRE kopieren müssen.

Damit können Sie die Schlüsselstärke

UPDATE

für Java 8, auf dem Classpath hängt über 128 Bits ändern. Wenn eines der JCE-Jars (local_policy.jar oder US_export_policy.jar) vorhanden ist, ist die JCE-Kryptografie unbegrenzt aktiviert. Vielleicht hat die Spring-Boot-Anwendung diese Abhängigkeit erfüllt, aber Ihre Tests nicht.

Die JCE Gläser für Java 8 here

+0

Aber warum arbeitet es an der Anwendung selbst? Willst du sagen, dass es ohne diese Dateien niemals funktionieren kann? –

+0

Der beschriebene Prozess gilt für Java 6, mein Fehler. Für Java 8 hängt es vom Klassenpfad ab. Wenn eines der JCE-Dateien (local_policy.jar oder US_export_policy.jar) vorhanden ist, ist JCE unlimited cryptography aktiviert. Vielleicht hat die Spring Boot Anwendung diese Abhängigkeit erfüllt, aber Ihre Tests nicht. Diese JARS finden Sie hier: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html –

+0

Habe gerade herausgefunden, dass es auch nicht auf dem (Ubuntu) Server läuft wo ich Bereitstellen ohne diese zusätzlichen Dateien. Keine Ahnung, warum es auf meinem Mac zu funktionieren scheint. –