Ich versuche, einige Daten mit AES in Java zu verschlüsseln.
Bis jetzt habe ich erfolgreich die Daten mit einem 128-Bit-Schlüssel verschlüsselt.
Für 256-Bit-Verschlüsselung muss ich meine Richtliniendateien ändern, was für mich keine Option ist.
Ich bezog this SO Q/A auch.
Versucht BouncyCastle, aber es scheint, sie haben keine Bestimmung für 256-Bit-Schlüssel ( 1. Frage here ).
Werfen Sie einen Blick auf JNCryptor. Aber weiß nicht, ob seine eine gute Quelle oder nicht. (BouncyCastle von FIPS genehmigt)
Auch Reflection ist keine Option, da es JAVA Lizenzvereinbarung verstößt.
Wenn also jemand mich zu der relevanten Frage führen oder eine mögliche Lösung teilen könnte, werde ich mich freuen.AES-256-Verschlüsselung in Java ohne Änderung der Richtliniendateien
Antwort
Es gibt nichts falsch oder unsicher über einen 128-Bit-AES-Schlüssel, es ist nicht brutal gewaltsam. Ein 256-Bit wird keine Sicherheit mehr bieten, ein erfolgreicher Angriff wird in einem anderen Bereich stattfinden.
Die Sache, um sicherzustellen, ist die Qualität des Schlüssels, verwenden Sie einen kryptografisch sicheren Zufallszahlengenerator (CSPRNG) oder leiten Sie den Schlüssel von einem wirklich guten Kennwort mit PBKDF2 ab.
Richtig authentifizieren Sie die Verschlüsselung: Verschlüsseln und dann MAC.
Verwenden Sie einen zufälligen IV im CBC-Modus und melden Sie keine Füllfehler.
wow .. Danke für die Beantwortung. Die Sache ist, dass der aktuelle Industriestandard der Verschlüsselung ** AES mit 256-Bit-Schlüssel ** ist. Gleiches ist die Voraussetzung für mein Projekt. Jedenfalls benutze ich jedes Mal zufällige Sitzungsschlüssel. –
Wo ist das ein Industriestandard? Aus [NIST-Empfehlung für Schlüsselverwaltung] (http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf): 29. Januar 2016, 4.2.2.1 * AES verschlüsselt und entschlüsselt Daten in 128 -Bit-Blöcke, mit 128, 192 oder 256-Bit-Schlüssel. Alle drei Schlüsselgrößen gelten als ausreichend für Anwendungen der Bundesregierung. * AES-128 ist mit RSA 3072 kompatibel. – zaph
Hinweis: Ein Grund für 256-Bit-Schlüssel im Fall von Quantencomputern sind die 256-Bit-Sicherheitsschlüssel. OTOH, RSA und EC werden komplett zerstört. Oh, Quantencomputer mit den erforderlichen Fähigkeiten werden vielleicht nie verfügbar sein, viel weniger kosteneffektiv in unseren Lebenszeiten – zaph
- 1. Ändern der Zeitzone ohne Änderung der Zeit in Java
- 2. Metarichtlinie (strenge Richtliniendateien) Frage
- 3. Änderungsdatum ohne Änderung der Uhrzeit
- 4. Programm Minecraft Mods ohne Änderung der Umgebungsvariablen?
- 5. JSON Pretty-Print ohne Änderung der Reihenfolge
- 6. Suchen nach JCE Unlimited Strength Jurisdiction-Richtliniendateien
- 7. Verwenden von "starken" JRE-Richtliniendateien mit BouncyCastle
- 8. Umleitung zu Ordner ohne Änderung der URL
- 9. Fakezeit ohne Änderung der Windows-Systemuhr
- 10. Angular 2: Routing ohne Änderung der URL
- 11. Gleichzeitige Änderung der doppelten [] [] Elemente ohne Verriegelung
- 12. Backbone.js Routing ohne Änderung der URL
- 13. Änderung Listenansicht ohne
- 14. Strings ohne Änderung der Reihenfolge der Wörter in einem Satz
- 15. Kopieren der Revisionen über Repositories ohne Änderung in der Revision
- 16. Zeichen ohne Änderung
- 17. ändert Legende Titelposition ohne Änderung der Etiketten
- 18. auf Chrome: Änderung der URL ändern, ohne
- 19. Ember erweitern Komponente ohne Änderung der Vorlage
- 20. Compiler Änderung in Java 7
- 21. Java Hashcode Änderung nach der Serialisierung
- 22. Aufruf von C++ - Funktion von Java ohne Änderung C++ Code
- 23. Änderung der Java-Zeitzone zur Laufzeit
- 24. Konvertieren von Unicode nach ASCII ohne Änderung der String-Länge (in Java)
- 25. Java Änderung áéőűú
- 26. PHP Redirect ohne Änderung Headers
- 27. Fang Änderung in Sicherheitserlaubnis der Datei ohne Blockierung
- 28. Brechen Änderung Dateinamen ohne Erweiterung in Swift2
- 29. setHour ohne Änderung auf Zeitzone
- 30. Kopieren und Einfügen der aktiven Spalte ohne Änderung der Zellenformate
Erwägen Sie, Ihren Code neu zu schreiben, um die Java Crypto Provider API nicht zu verwenden, und verwenden Sie die bouncycastle API direkt, z. [AESEngine] (http://www.bouncycastle.org/docs/docs1.6/org/bouncycastle/crypto/engines/AESENngine.html). Dadurch wird die Überprüfung der Richtliniendateien entfernt. Etwas in der Art von [this] (http://www.programcreek.com/java-api-examples/index.php?api=org.bouncycastle.crypto.modes.CBCBlockCipher). – Henrik
@Henrik Danke, dass du dir Zeit genommen hast. Ich verwende keine Java API für Crypto-Operationen. Es ist nur, dass Bouncy Castle keine 256-Bit-Verschlüsselung ohne die Policy-Dateien afaik [FAQ] (http://www.bouncycastle.org/wiki/display/JA1/FrequentlyAsked+Questions) unterstützt. –
Diese FAQ-Antwort bezieht sich nur auf die Verwendung von BC über die Crypto-Provider-API. Sehen Sie sich das Beispiel an, das ich in meinem vorherigen Kommentar angegeben habe, und versuchen Sie, die Schlüsselgröße in "cipher.init" von 128 auf 256 zu ändern. Dies wird von den Richtliniendateien nicht beeinflusst. – Henrik