Random Passwort für den User + Hashen

Steffanie

Mitglied
Servus Leute,

Ich mache ja momentan ein Chatprogramm.
Ich habe das jetzt so vor das dem User ein Random Password zugewiesen wird!
so sieht meine TestKlasse aus
Java:
public class Password {
	private static short length =10;
	private static int[] wrongrandom={0,39,40,41,42,43,44,45,46,58,59,95,96};
    
	public void setLength(short s){
		length = s;
	}
    public static String createRandomPW()   {
    	char[] pw8 = new char[length];
    	int random=0;
    	for (int i = 0; i < pw8.length; i++) {
    		while(random<33||random>122){
            random = (int)(Math.random()*100.0)+23;
    		
    		for(int j =0;j<wrongrandom.length;j++){
    			while(random==wrongrandom[j]){
    				random = (int)(Math.random()*100.0)+23;
    			}    			
    			}
    		pw8[i]=(char)random;
    		}    		
    		random=0;
		
		}
    	return new String(pw8);
         
        }
}
was haltet ihr davon?
ist das eine Sichere Möglichkeit? oder sollte ich lieber diesen String den ich dort generie nochmal hashen und wenn ja wie? also ich würde halt gerne 10 stellige passwörter generigen.

Das Methode wird aufgerufen wenn der User freigeschalten wird und dann wird der String direkt in die db geschrieben. Ist das überhaupt sicher? Das pw steht ja noch immer in reinform in der DB.
Wie Hashe ich den das Passwort?

Verbesserung vorschläge?

Ausgabe wäre z.b.
0: Oqzd!5BlsP
1: -x3\Y2pf@@
2: N%cir<N$Ls
3: %@sIfg<yV%
4: TkyhxFW1\o
5: 0TM!='Mzdm
6: 38o-l20Jwg
7: )SMQy\zDn#
8: naEYphAm\"
9: 7=A0/!Ko8N
 
Zuletzt bearbeitet:

turtle

Top Contributor
st das überhaupt sicher? Das pw steht ja noch immer in reinform in der DB.
Definitv NEIN.
Normalerweise speichert man den Passwort-Hash in der DB und vergleicht dieses mit dem Hash(Benutzereingabe).

Die Auswahl der Länge des Passworts hat NICHTS mit der Länge des daraus berechneten Hashwertes zu tun. Bei MD5, den man nicht mehr verwenden sollte. haben alle Haswerte eine Länge von 128-Bit.

Damit verstehe ich auch deine Aussage nicht, warum du für einen Benutzer ein Passwort generieren möchtest???:L Ich kann mir vorstellen, das der Benutzer über ein Registrierungsformular selbst sein Passwort wählt. Das dieses abhörsicher zum Server gelangt, ist eine andere Frage und wird fast immer durch SSL gemacht.
 

Steffanie

Mitglied
ist einfach die vorgabe eine randomPW zu erstellen... :-D

so hab das jetzt so realisert
Java:
 public static String hashePasswort(String password){       
        return new String(DigestUtils.md5Hex( password ));
    }
aber wie du schon gesagt hast jeder String ist genau gleich lang wie unterbinde ich das? also eventuel mit Sha1 hashen? was eigenet sich besser als md5?
 
Zuletzt bearbeitet:

crypto

Mitglied
Klar sin die gleich lang... ein hashwert einer kryptografischen hashfunktion ist immer
gleich lang (mal abgesehen von verschiedenen einstellungen am algorithmus....)
Warum willst du das unterbinden??? was soll das bringen??

Also ne möglichkeit wär beispielsweise den hashwert als seed für nen Kryptografischen Zufallsgenerator zu übergeben
un anschließend den wert der ersten x ( zb. 3 bytes) des hashes als länge für den Output des KZG festzulegen....

Aber wie schon gesagt... das bringt nix... weder sichheit , sonst was ersichtliches....

Besser wären SHA-160 , SHA-256 .... SHA-512
oder RIPEMD-160....


Also ich weiß ned für wen das programm sein soll, es scheint ne so, also ob du tief in der Materie drin wärst (Kryptographie)... Also wenn das für kunden etc. sein soll, lass das lieber leute mit mehr erfahrung machen...
Das ganze is nämlich nich ganz trivial....
 

Natac

Bekanntes Mitglied
So wie ich das sehe, geht es dir doch nur darum, einen zufälligen Strings zu generieren, dem du den Nutzer als Passwort vorschlagen willst!?

Und das heißt eigentlich: Zufällig oft ein zufälliges Zeichen aus möglichst vielen Zeichen hintereinander zu hängen, um eben einen zufälligen String zu generieren.

Und wie "sicher" dieser String als Passwort ist, ist mal so eine Frage. Ich persönlich halte ja "slkdjf" für genauso sicher wie "$1i<d6f". Denn solange der String nicht einfach zu erraten ist, ist er vor Menschen "sicher". Und für Brute Force ist es egal, da dort sowieso jedes Zeichen durchprobiert wird.

Und in einer Datenbank abspeichern tut man das Password sowieso nicht. Man bildet dann einen Hash vom Passwort (im billigsten Fall mit MD5) und speichert den. Und JA, dass bedeutet, dass auch andere Passwörter zulässig wären, die den selben Hash ergeben. Aber so eines zu finden, ist eben schwierig. Und wie Schwierig das genau ist, dass macht ein Passwort "sicher". Also nicht das Passwort selbst, sondern wie es eben in der Datenbank abgespeichert ist ;).
 
Zuletzt bearbeitet:

Decrayer

Mitglied
Und wie "sicher" dieser String als Passwort ist, ist mal so eine Frage. Ich persönlich halte ja "slkdjf" für genauso sicher wie "$1i<d6f". Denn solange der String nicht einfach zu erraten ist, ist er vor Menschen "sicher". Und für Brute Force ist es egal, da dort sowieso jedes Zeichen durchprobiert wird.

Zum Thema Sicherheit: Wenn ein Angreifer die Serverdatenbank in die Finger bekommt, dann wird in der Regel kein reines Bruteforce genutzt. Sondern Wörterbuchattacken. Wer selbst mal seine Passwortdatenbank testen möchte, dem empfehle ich dazu das Program "John the Ripper".

Im Grunde genommen funktioniert das so: Man nehme möglichst viele Wörter der Sprache, von der man annimmt, das die User dieser mächtig sind. Bei diesem Forum hier würde ich z.B. ein Deutsches und Englisches Wörterbuch nehmen. Dann kann man in dem Program noch definieren, welcher Art die Rekombinationsmöglichkeiten sein sollen. z.B. werden Zahlen an verschiedenen Positionen der normalen Wörter eingesetzt, Leetspeak genutzt, Wortkombinationen etc. und das ganze Dann mit einer Art Bruteforce kombiniert. Und unter den Gesichtspunkten ist "$1i<d6f" definitiv sicherer als "slkdjf". Denn beim letzten kommen nur Buchstaben vor, die nahe der linken bzw. rechten Handposition auf der Tastatur vorkommen. D.h. selbst wenn ihr "zufällig" auf der Tastatur rumhackt, bekommt ihr kein besonders gutes Passwort hin, bzw. kein besseres, als ein Random-Zeichen Generator (bei gleicher Zeichenanzahl).


Zur Absicherung von Passwörtern daher:

1. Passwort mit Zufallsgenerator erzeugen (oder strikte Vorgaben machen).
2. Mit einem modernen Hash-Verfahren den Hash erzeugen.
3. Die Passwörter Salzen.


Salzen: Ihr hasht nicht das reine Passwort, sondern erstellt für jeden User noch einen langen Zufallsstring den ihr mit abspeichert. Diesen fügt ihr vor dem hashen zum eigentlichen passwort hinzu. In der Datenbank steht also:

<username>;<Salt>;<HASH>

wobei der Hash folgendermassen berechnet wird:

HASH = SHA256(eingegebenesPasswort+Salt)


Wozu der Spaß? Naja, wenn jemand versucht, den Hash-Wert mit Bruteforce zu knacken, könnte er jeden gefundenen Hashwert für alle Benutzer die das selbe Passwort haben benutzen. Also wenn zwei User das gleiche, schwache Passwort benutzen, hätten diese auch den gleichen Hash. Wenn ein Angreifer jetzt die Datenbank in die Finger bekommt, braucht er für alle Hashes nur einmal einen Angriff zu fahren. Wenn man aber die Salts dazu nimmt, muss er für jeden einzelnen User den kompletten Angriff fahren. Plus, er kann keine Rainbow-Tables mehr nutzen.

Noch was zum code oben: Wie wäre es, wenn du gleich die Zufallszeichen im gewünschten Bereich erzeugen würdest, anstatt erst welche zu erzeugen und dann zu überprüfen, ob diese ok sind? Das würde viel Performance bringen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Random Generator Allgemeine Java-Themen 6
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
T Math.random Allgemeine Java-Themen 9
Javafan01 Deklarieren einer Math.random() Zufallszahl Allgemeine Java-Themen 16
G Aus JTextField Zahlen auslesen und random generieren Allgemeine Java-Themen 10
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
BRoll Random - Wie aufgebaut? Allgemeine Java-Themen 9
T java.uil.Random liefert negative Werte Allgemeine Java-Themen 2
G Random zeichensatz Allgemeine Java-Themen 2
U Math.Random anders verteilen Allgemeine Java-Themen 4
N Die Klasse Random in Java Allgemeine Java-Themen 3
H java.util.random magischer Startwert? Allgemeine Java-Themen 2
L Zufallszahlen mit Random.nextdouble() Allgemeine Java-Themen 3
dayaftereh Random Numbers in Java Allgemeine Java-Themen 7
Q Random mit beeinflusster Wahrscheinlichkeit Allgemeine Java-Themen 4
I Random Acces auf ein Set Allgemeine Java-Themen 4
S Random funktion in einer Grafischen Oberfläche Allgemeine Java-Themen 10
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
S Random Allgemeine Java-Themen 9
C Math.random() vs Random Allgemeine Java-Themen 5
S Random() vs Math.random Allgemeine Java-Themen 4
H Math.random() Allgemeine Java-Themen 3
Z Passwort Versuche speichern Allgemeine Java-Themen 8
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
J Passwort Manager Allgemeine Java-Themen 15
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
F Best Practice Passwort Recovery - Schulbeispiel Allgemeine Java-Themen 4
D Passwort verschlüsseln - Wo Allgemeine Java-Themen 2
J Passwort Verschlüsselung hash Allgemeine Java-Themen 2
O verschlüsseltes Passwort ablegen Allgemeine Java-Themen 12
G Unix Passwort mit Java ändern? Allgemeine Java-Themen 3
OnDemand Passwort entschlüsseln Allgemeine Java-Themen 8
W Passwort Clientseitig sicher ablegen ohne Hash Allgemeine Java-Themen 2
DStrohma Passwort in Datei speichern - wie? Allgemeine Java-Themen 31
DStrohma Verschlüsselung: SALT aus Passwort generieren? Allgemeine Java-Themen 3
R Windows - User Passwort ändern Allgemeine Java-Themen 2
B "Verschlüsselung" mit Passwort (XOR bzw. Modulo) Allgemeine Java-Themen 7
S Erstellung einer verschlüsselten Passwort Datei Allgemeine Java-Themen 11
R Programm soll warten bis eine Passwort eingabe gemacht wurde. Allgemeine Java-Themen 6
J TrueZip - Passwort bei Zipfile Allgemeine Java-Themen 13
I Passwort verschlüsseln Allgemeine Java-Themen 22
padde479 zip mit Passwort Allgemeine Java-Themen 2
H root-Passwort übergeben Allgemeine Java-Themen 28
S Passwort geschützte Excel Datei öffnen (POI) Allgemeine Java-Themen 4
G Blind-Datei (Passwort auslesen) Allgemeine Java-Themen 5
C Passwort sicher speichern Allgemeine Java-Themen 5
P Passwort lokal speichern Allgemeine Java-Themen 5
F Passwort hash Allgemeine Java-Themen 8
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
S .rar-Dateien ein Passwort als Parameter übergeben Allgemeine Java-Themen 5
J Passwort(String) ---> SecretKey(Spec) Allgemeine Java-Themen 6
T jxl Passwort Allgemeine Java-Themen 3
P URL mit htaccess in Explorer öffnen (ohne user-passwort) Allgemeine Java-Themen 6
B Passwort verwenden ohne dass es im Quelltext steht Allgemeine Java-Themen 24
E TextField/Passwort Allgemeine Java-Themen 5
F Java Passwort abfrage Allgemeine Java-Themen 2
D sicheres hardgecodetes passwort? Allgemeine Java-Themen 18
G Zip Datei - Passwort schützen Allgemeine Java-Themen 13
Oneixee5 Für die RPi-Bastler ... Allgemeine Java-Themen 0
I PDF2Tiff für Fax Allgemeine Java-Themen 0
W Vergleichstool für xml-Dateien Tortoise-svn Verknüpfung Allgemeine Java-Themen 2
Zrebna Tipps für Organisation von Code-Reviews nach einem Pull Request. Allgemeine Java-Themen 5
Zrebna Bitte um Empfehlungen für "zeitlose" Bücher bzgl. Backend mit Spring und Beans Allgemeine Java-Themen 25
G Lesbare args für die main-Methode Allgemeine Java-Themen 6
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
Karl_Der_Nette_Anfänger Hat wer ne Lösung für verknüpfte Postleitzahlen? (Baum/Wurzel Struktur) Allgemeine Java-Themen 11
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G KeyListener für JTextField Allgemeine Java-Themen 5
webracer999 Library für Textsuche (z. B. include/exclude, and/or)? Allgemeine Java-Themen 5
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
B Simpler Eventlistener für Tastaturtaste bauen? Allgemeine Java-Themen 13
G Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
E Key für TOTP Algorythmus(Google Authentificator) Allgemeine Java-Themen 0
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
I OCR Library für Belegerkennung Allgemeine Java-Themen 7
farah GetterMathod für Farbkanäle Allgemeine Java-Themen 6
B Welcher Datentyp für sehr große Zahlenbereiche? Allgemeine Java-Themen 1
S Webservices für binäre Daten? Allgemeine Java-Themen 5
G Licence-Header für InHouse entwickelten Source Allgemeine Java-Themen 8
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
O git ignore für Intellji braucht es die .idea Dateien? Allgemeine Java-Themen 8
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9
M wiviel Java muss ich für die Berufswelt können ? Allgemeine Java-Themen 5
Robertop Datumsformat für GB ab Java 16 Allgemeine Java-Themen 1
Thallius Verschiedene entities für gleichen Code…. Allgemeine Java-Themen 8
OnDemand Zentrale "Drehscheibe" für verschiedene APIs Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben