Verschlüsselung speichern

Hallo zusammen,
ich speichere mit Jasypt und PBEWithMD5AndTripleDES Daten in einer DB. 2 Fragen:

Reicht PBEWithMD5AndTripleDES?
welchen Datentyp sollte ich wählen? Reicht varchar(255) oder lieber Text?
Verschlüsselt werden Namen, IBAN, also nix länger als 255 Zeichen in Rohdaten

Ich hätte ja erwartet, dass die chiffre binär ist…

bye
TT

Eigentlich nicht. DES gilt nicht mehr als sicher. Triple ändert an der Tatsache leider nix.

https://crypto.stackexchange.com/questions/29991/triple-des-as-cryptographic-hash-function

Schönen Abend

Joa, Jasypt speichert das als Base64 ab so wie das aussieht, kann das sein?

Wenn DES nicht so doll ist, was wäre dann die beste Verschlüsselung im Bezug auf Jasypt?

Da bin ich überfragt.

Danke, ist es so unnormal, dass das als base64 abgespeichert wird?

:face_with_raised_eyebrow: jasypt.org geöffnet und da springt mich schon ein Beispiel an

AES256TextEncryptor textEncryptor = new AES256TextEncryptor();
textEncryptor.setPassword(myEncryptionPassword);
String myEncryptedText = textEncryptor.encrypt(myText);
...
String plainText = textEncryptor.decrypt(myEncryptedText);

ansonsten einfach mal Google zum Thema Verschlüsselung belästigen

es macht kein Unterschied ob den verschlüsselten Kram als BLOB in der DB speicherst oder ihn vorher in base64 „wandelst“ und dann in string bzw. text speicherst

hand, mogel

1 „Gefällt mir“

Alles „kritische“ dennoch als base64 in der DB zu speichern, ist dennoch nicht verkehrt.

Keine Hand, ist ja Corona, Cyborg.

ja klar - weil das so sicher ist

habd, mogel

Hab jetzt auf PBEWITHHMACSHA512ANDAES_256 umgestellt, das soll wohl derzeit sicher sein.
Dazu werden die Daten als Base64 String gespeichert. Das ist iO so ja?

Das Ver- und Entschlüsseln mit der App klappt. Allerdings kann ich die Base64-Strings nicht per Hand entschlüsseln. Wenn ich den String nehme und auf der untenstehenden Seite entschlüsseln will, kommt nix gescheites (Passwort/Key stimmt)

Hat jemand ne Erklärung dafür?

Ist es auch, falls kompromittierte Bilder doch mal auf der Festplatte landen.

Warum schreibst du, wenn du keine Ahnung von Sicherheit hast?

Was für Bilder? Schreenshots von den Tabelleninhalten oder was meinst du? Bin dezent verwirrt :slight_smile:

Cyborg ist unser Haus-und-Foren-Troll. Er reist gerne Sinn & Aussagen auseinander und erweitert sie mit Dingen die nicht zum Thema passen. In deinem Fall eben Bilder, um mich zu trollen.

hand, mogel

1 „Gefällt mir“

Okay das trägt natürlich nicht dazu bei meine Frage zu beantworten :smiley:

Einfache Frage: Base64 abgespeichert, String ist mit AES Verschlüsselung, welche Nachteile hat es die so zu speichern?

https://stackoverflow.com/questions/9722603/storing-image-in-database-directly-or-as-base64-data

Pro base64: the encoded representation you handle is a pretty safe string. It contains neither control chars nor quotes. The latter point helps against SQL injection attempts.

Pro BLOB: the database manager software knows what type of data it has to expect. It can optimize for that.

Contra base64: 33% Overhead.

Keine.

Soweit so klar. Nun hab ich das alles schn eingebaut und es speichert meine Base64 Strings verschlüsselt ab.

Wenn ich mir nun so einen String nehme, wie kann ich den „per Hand“ entschlüsseln? Zb über ein Onlinetool?

Hab es hier versucht: https://8gwifi.org/pbe.jsp
Funktioniert aber nicht!

Ich gebe den Base64 String ein (oder auch den decoded Base64 String)
wähle decode
wähle PBEWITHHMACSHA512ANDAES_256
und gebe mein Key ein mit dem der String verschlüsselt wurde

es kann nicht decodiert werden! Kann es sein, dass da noch irgendein Salt beim speichern benutzt wird uns es daher nur von meinem Programm entschlüsselt werden? Denn im Programm kann ich die Daten entschlüsseln, das funktioniert wunderbar

ohne funktionierenden Code (so kurz wie möglich) wird keiner Dein Problem genau verstehen. Evt. hast Du bei Deinem encode schon einen Fehler drinnen

wenn ich mir die Ausgabe der Webseite anschaue - anscheinend ja

folgende Fallstricke:

  • wie wandelst Du das Password in ein Array für die Verschlüsselung um? Achtest Du auf das Encoding? Unterstützt die Seite dieses Encoding?
  • Welchen IV hast Du verwendet? Kann die Seite diesen IV auch verwenden?
  • Wieviel Runden hast Du verwendet? Hast Du die richtige Anzahl auf der Seite angegeben?
  • Wann wandelst Du was in was? (siehe Code-Beispiel)

hand, mogel