In Java String sicher verschlüsseln

Tollpatsch

Neues Mitglied
Servus Leute,

ich studiere Wirtschaftsinformatik im 3ten Semester, habe würde ich sagen fortgeschrittene Kenntnisse in der Java Programmierung, Grundkenntnisse der Datenbankprogrammierung/einbindung, Grundkenntnisse in der GUI programmierung...

So worum geht es hier?
Ich möchte ein Programm erstellen das dem User ermöglich seine Passwörter von Amazon, PayPal etc sicher zu hinterlegen!



Wie habe ich es vor zu bewerkstelligen?
Es gibt mehrere Benutzerkonten
1. User 1 registriert sich und hinterlegt seine Passwörter für z.B. Amazon
2. Jedes der Passwörter soll in der Datenbank hinterlegt werden
2.1 Bei dem Loginpasswort hab ich mir überlegt das Passwort zu Hashen und dieses dann zu hinterlegen und dann beim Login zu überprüfen ob das dort eingegebene Passwort gehasht, den Wert ergibt den das Passwort in der db hat.
Aber
Nun gibt es 2, für mich ersichtliche Probleme
1. Welchen Verschlüsselungsalgorithmus wende ich an, dieser soll jetzt keine 5minuten brauchen, um den verschlüsselten Wert zu erstellen. Welches Zeitintervall muss ich mindestens einplanen?
2. Bei der Anzeige des jeweiligen Passwortes wird ja das Passwort in eine Variable gespeichert und dann ausgeben über ein Popup oder ähnliches! Wie entferne ich das Passwort wiede raus dem Zentralspeicher? dort ist es ja hinterlegt? Reicht eine einfache Überschreibung des Passwortes also
Java:
String p ="Passwort";
System.out.print(p);
p="XXXXXXXXXXXXXXX";

gegoogelt habe ich schon habe nach Java Verschlüsselung gegoogelt dort aber entweder nur sehr einfache Verschlüsselungsvarianten gefunden oder hoch komplexe die ich nicht verstanden habe!
Deshalb wäre es super wenn heir jemand einen Link schickt eben in diesem Link auch erklärt wird wie der Code zustandekommt!

Was denkt ihr darüber? Hab ich alle Risiken/Probleme bedacht was so ein Passwortmanager mti sich führt?
 
Zuletzt bearbeitet:

Max_

Mitglied
Java:
String p ="Passwort";
System.out.print(p);
p="XXXXXXXXXXXXXXX";

Ich habe relativ wenig Ahnung von Java ansich und auch bei Passwörter kann ich dir nicht helfen, aber wenn es nur um eine simple Anwendung geht, würde ich dir empfehlen md5 und sha mal näher anzuschauen. (Wichtig ist das du einen statischen und noch einen dynamischen Salt hinzufügst),


[Java]String p =hash("Passwort")[/Java]
Damit kannst du das Passwort nicht mehr ausgeben, es wird aber auch in keiner Variable gespeichert. Ob es bezogen auf die Sicherheit etwas bringt kann ich dir nicht sagen. Warte lieber auf jemanden der mehr Ahnung hat als ich.
 
Also wenn ich das richtig verstanden habe, möchtest du eine Art Passwortspeicher anlegen, dessen Inhalt sich erst nach Eingabe eines Passworts offenbart, oder?

Also den Inhalt selbst würde ich mit RSA oder so verschlüsseln (oder auch AES).

Der User soll dann zum sichtbar machen des Inhalts den zum Verschlüsseln genutzten Key eingeben...
 

calousy

Mitglied
Ich habe relativ wenig Ahnung von Java ansich und auch bei Passwörter kann ich dir nicht helfen, aber wenn es nur um eine simple Anwendung geht, würde ich dir empfehlen md5 und sha mal näher anzuschauen. (Wichtig ist das du einen statischen und noch einen dynamischen Salt hinzufügst),
was soll ein statischer und dynamischer Salt bringen? Ein dynamischer reicht aus. Wenn du einen statischen verwendest, kannst du dir auch eine Rainbow-Table damit basteln. Bei einem dynamischen Salt müsstest du dir für jeden möglichen Salt die Hashes für mögliche Passwörter berechnen. Der Aufwand ist also extrem größer.
[Java]String p =hash("Passwort")[/Java]
Damit kannst du das Passwort nicht mehr ausgeben, es wird aber auch in keiner Variable gespeichert. Ob es bezogen auf die Sicherheit etwas bringt kann ich dir nicht sagen. Warte lieber auf jemanden der mehr Ahnung hat als ich.
wo hast du denn die hash-Methode hergezaubert? :rtfm: Das bringt gar nix, denn für sowas gibt es Rainbow-Tables. Wenn hashen, dann immer mit einem dynamischen Salt.

Also, dein Master-Passwort wird gehasht und gesalzen (Einweg). Die Passwörter der Seiten verschlüsselst du mit deinem Passwort (nicht Hashen, das ist Einweg; du musst die gespeicherten ja auch wieder entschlüsseln können). Mit deinem Master-Passwort kannst du die anderen Passwörter dann auch wieder entschlüsseln.
 

crypto

Mitglied
@Tollpatsch

Also, ich weiß nich so genau wie genau du das umsetzen willst, aber...

Is das ganze ne locale datenbank? wenn nich... wird das ganze schon ganz schön komplex...

Ich rate dir...
für jeden benutzer ein eigenes textfile
anzulegen in dem du benutzernamen un passwort speicherst....
die datei wird dann verschlüsselt...

Dazu brauchst du die JCE (Cipher,SecretKeySPec, etc) sowie MessageDigest un In/outputstreams

Was deine fragen angeht:

1. naja die jce bietet die algorithmen: AES (128bit only) ,blowfish,rc2 ... ich rate dir zum AES oder evtl zu Blowfish
für alle (sicheren) anderen brauchst du externe libraries

2. normalerweise müsste ein passwort = null zusammen mit System.gc reichen, aber : 1. Du musst auch alle anderen key-object (SecretKeySpec etc.) löschen un 2. In java hast du keine echte kontrolle über den speicher...
das macht die VM... deshalb is das in java immer ein wenig problematisch....

wenn du wie @BildschirmUser vorschlägt asymmetrische kryptographie (RSA) einsetzen willst, wirds noch schwerer,
also davon solltest du die finger lassen...



gegoogelt habe ich schon habe nach Java Verschlüsselung gegoogelt dort aber entweder nur sehr einfache Verschlüsselungsvarianten gefunden oder hoch komplexe die ich nicht verstanden habe!

Tja, wenn du sicher verschlüsseln willst, is das nun mal nich ne sache von 5 min, das bedeutet, viel lesen, mathematik
un lange übung/erfahrung.... un selbst dann kommen immer wieder fehler vor ;)

Was denkt ihr darüber? Hab ich alle Risiken/Probleme bedacht was so ein Passwortmanager mti sich führt?

Ganz generell glaub ich, dass du nich allzu viel ahnung von kryptographie hast... deshalb empfehl ich dir,
dich erstmal ein bisschen einzulesen, un dann die JCE / JCA studierst... :D

Also wenn das nur so zum üben / probieren is ... okay, viel spaß
Ansonsten, lass da mal die finger von, lieber erst mal fertig studieren un in informationssicherheit, falls man das in WI
hat ordentlich aufpassen ;)
 
Zuletzt bearbeitet:

crypto

Mitglied
was soll ein statischer und dynamischer Salt bringen? Ein dynamischer reicht aus. Wenn du einen statischen verwendest, kannst du dir auch eine Rainbow-Table damit basteln. Bei einem dynamischen Salt müsstest du dir für jeden möglichen Salt die Hashes für mögliche Passwörter berechnen. Der Aufwand ist also extrem größer..

Also naja, ohne hier ne große diskussion vom zaun zu brechen, salt is gut un schön aber hier(fall) entscheidet eher
das richtige hashverfahren, denn wenn ein vernünfiges passwort gewählt wird, dann is bei SHA-256 aufwärts schnell
schluss mit bruteforcing... zumindest für einen halbwegs realistischen angreifer... Also lieber ein sicheres hashverfahren
ohne salt, als ein wie vorgeschlagen unischeres (MD5) mit....
Aber im prinzip hast du recht... mit salt is eigtl. immer besser...

wo hast du denn die hash-Methode hergezaubert? :rtfm: Das bringt gar nix, denn für sowas gibt es Rainbow-Tables. Wenn hashen, dann immer mit einem dynamischen Salt.

Also ich denk die is eher schematisch... un nein, hash ohne salt is nich gleich unsicher... ich spar mir auszurechnen
was ein rt-bruteforce auf sha-160 an aufwand kostet... Aber ich glaub, wir sin uns einig, dass es hier (fall) viel
dringendere baustelle gibt, als das passwort-hashing-verfahren....
 

Phash

Top Contributor
Gegen Bruteforce soll helfen, wenn man den Entschlüsselungsalgorithmus so unperformant wie möglich macht.

Hab da neulich etwas mit einer kaskadierten salt+ hash Lösung gesehen.

Es wird quasi der hash mit salt erzeugt, daraus wieder ein hash plus salt usw.

In dem Beispiel gab es 4 Stufen.
Man meinte, ein Durchlauf dauert dann einige ZehntelSekunden. Das stört den user nicht , aber brute force dauerte nochmal deutlich länger, und auch schwache pws werden sicherer
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
D Java Error String kann nicht in Int umgewandelt werden Allgemeine Java-Themen 2
J Java String to Array = Crash Allgemeine Java-Themen 6
A BlueJ Java Frame Java Editor --> Bluej / String title Allgemeine Java-Themen 8
B In Java String ein + Zeichen Allgemeine Java-Themen 4
M Java-String in XML? Allgemeine Java-Themen 5
P Java String Regex Allgemeine Java-Themen 2
X Java String Regex - Sonderzeichen Filtern Allgemeine Java-Themen 5
S String to Java-Code Allgemeine Java-Themen 3
E String replace java 1.4 Allgemeine Java-Themen 4
N Java Anfängerschwierigkeiten(String) Allgemeine Java-Themen 4
N serialize deserialize java object über string Allgemeine Java-Themen 8
M Java Regular Expression für Mathe-String (= 2+4*3+2) Allgemeine Java-Themen 7
L JNI: C-->Java : Methode mit String-Parameter Allgemeine Java-Themen 18
O String auf zahlen prüfen (java 1.3) Allgemeine Java-Themen 4
R java.lang.String maximale Anzahl der Zeichen Allgemeine Java-Themen 7
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben