Jasypt verschlüsselten String nicht auf einer anderen Maschine in der Lage zu entschlüsseln

stimmen
1

Unsere Sicherheitsabteilung will, dass wir 256-Bit-Verschlüsselung verwenden SSN zu verschlüsseln, Namen von Benutzern usw., also entschieden wir uns unten mit JASYPT mit dem Beispielcode zu gehen:

encryptor = new StandardPBEStringEncryptor();
encryptor.setProvider(new BouncyCastleProvider());
encryptor.setAlgorithm(PBEWITHSHA256AND256BITAES-CBC-BC);
encryptor.setPassword(OUR_KEY)
encryptor.encrypt(TEXT TO ECNCRYPT)

Das Problem, das wir bemerkte, wenn unsere Anwendung einen verschlüsselten Datensatz aus unseren lokalen Rechnern erstellt, kann die Anwendung auf den App-dev Server entschlüsselt sie nicht und umgekehrt, obwohl der Schlüssel gleich ist. Es scheint, wie JASYPT ist eine maschinenspezifische Informationen in der Zugabe von Salz (MAC-Adresse etc.).

Selbst mit FixedStringSaltGeneratoroder ZeroSaltGeneratorhilft nicht. Dies schafft ein Problem für uns , denn wenn wir jemals unseren Produktions - Server auf einem anderen Rechner oder aufgefrischt vorge prod Daten mit den prod Daten migriert, wir ein paar Millionen Jahre benötigen , um die Informationen zu erholen.

Die Sicherheitsabteilung will, dass wir ein gut nutzen wissen, Bibliothek und nicht über eine eigene Lösung brühen. Kann jemand bitte etwas Licht auf dieses Problem, wie wir verschlüsselten String erzeugen kann, die über verschiedene Maschinen entschlüsselt werden kann unter Verwendung von jasypt 256-Bit-Verschlüsselung, oder wenn wir Pre-prod Datenbank mit prod Daten zu aktualisieren, wie wir wäre in der Lage sich zu erholen Namen etc werfen dass wurden durch einen anderen Server verschlüsselt?

Jegliche nützliche Erkenntnisse wird sehr geschätzt.

Veröffentlicht am 17/04/2013 um 21:47
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

Ich weiß, dass dies eine ziemlich alte Frage, aber ich erleben vor kurzem dieses Problem und die Auflösung für mich hatte nichts mit den Unterschieden in dem Maschinenbetriebssystem endianness zu tun.

Es hatte mit einem Charakter in dem Passwort selbst, das Dollarzeichen ($) zu tun, die irgendwie in Betracht gezogen wurde gegen ein Sonderzeichen in Linux, um nicht besondere in Windows geprüft. Also alles funktionierte gut, die Werte in Windows verschlüsseln, aber wenn ich auf Linux vertauscht und versuchte, die Werte mit dem gleichen Passwort zu entschlüsseln, die jasypt Befehlszeile decrypt.sh Skript, bekam ich die Fehlermeldung „Operation nicht möglich ist (Bad-Eingang oder Parameter)“und bemerkte, dass das Passwort in den jasypt Ausgabeargumenten Liste entschlüsseln war anders als die in tippe ich hatte (das Skript offenbar den Teil des Passworts von dem Sonderzeichen bis zum Ende des Passwort-String abgehackt).

Wie auch immer, war meine Lösung, das Passwort zu ändern, nicht ein Sonderzeichen zu verwenden und dann hat es funktioniert. Hoffe, dass dies eine arme Seele hilft, die über das gleiche Problem in Zukunft laufen geschieht, weil ich es 2 Tage verschwendete.

Beantwortet am 07/09/2017 um 17:48
quelle vom benutzer

stimmen
0

einfache Anführungszeichen statt doppelter Anführungszeichen Ihres Eingabestring wickeln. Diese Lösung funktioniert, wenn ich mit $ ein Problem mit Verschlüsselung und Entschlüsselung von String hatte.

Beantwortet am 15/09/2017 um 10:39
quelle vom benutzer

stimmen
0

Ihr Schlüssel könnte einige Sonderzeichen werden enthalten, die sonst Ersatz mit etwas Shell. tun ein echo „YourKey“> Datei und überprüfen Sie den Inhalt dieser Datei. Mit diesem Inhalt dann als Schlüssel zu entschlüsseln; es sollte die verschlüsselte Zeichenfolge entschlüsseln können.

Beantwortet am 28/03/2018 um 01:39
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more