Zum Inhalt springen

Passwortüverprüfun


Empfohlene Beiträge

Hi,

ich bin gerade dabei ein Registrierungsformular zu coden...

das Passwort soll jeoch immer mindestens einen buchstaben und eien zahl enthalten.

habe schon das halbe web nach einem passenden snipped durchsucht und komme immer zu den regex...

jedoch keins hat bisher funktioniert.

jemand eine Idee?

lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Prüfe doch einfach mit javascript die einzelnen Zeichen, die übergeben werden ab, ob der ASCIIwert zwischen 65 und 90 oder zwischen 97 und 122 liegt, ist das der fall setzt du eine Variable auf "true" -> dann ist zumindest schonmal ein Buchstabe vorhanden. Zeitgleich kannst du dann noch jeden Buchstaben überprüfen ober er eine Zahl ist (!isNan(wert)) trifft das auf ein Zeichen zu setzt du eine weitere variable wieder auf true.. sind nach der schleife beide variablen auf true, ist das Passwort korrekt, sonst nicht.. ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

@dadagor: Das ist ein sehr naiver Ansatz, solche Prüfungen macht man wirklich mit regulären Ausdrücken, alles andere ist Anfängerniveau. Denn was passiert wenn man später feststellt, man will Groß- und Kleinbuchstaben, Zahlen und mind. ein Sonderzeichen!? Dann muss ich eine riesige Schleife mit If / Switch-Case bauen und darin dann die ASCII Codes der Zeichen speichern, das führt zu unübersichtlichen und absolut unnötigen Code. Die Prüfung mit einem regulären Ausdruck ist eine Zeile in der Form


 matchokay = string.match( regexpr )

Prüfe doch einfach mit javascript die einzelnen Zeichen, [...] ist das der fall setzt du eine Variable auf "true" -> dann ist zumindest schonmal ein Buchstabe vorhanden. Zeitgleich kannst du dann noch jeden Buchstaben überprüfen ober er eine Zahl ist (!isNan(wert)) trifft das auf ein Zeichen zu setzt du eine weitere variable wieder auf true.. sind nach der schleife beide variablen auf true, ist das Passwort korrekt, sonst nicht.
Das ist ein wirklich sehr naiver Ansatz, falls man es in dieser Form machen will, kann man dann abbrechen, wenn sowohl ein Zeichen, wie auch eine Zahl erkannt wurde, denn dann wäre der Ausdruck schon gültig. Man muss nicht bis zum Ende der Zeichenkette laufen Außerdem braucht man hier keine If Bedingung.

charfound = false;

numberfound = false;

for( i=0; (i < length(eingabe)) && not(charfound && numberfound); ++i)

{

      charfound = charfound || ischar(eingabe[i]);

      numberfound = numberfound || isnan(eingabe[i])

}

ischar prüft dann auf den korrekten ASCII Code.

Bearbeitet von flashpixx
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

das mit Regex ist zwar ne nette sache, jedoch steige ich da absolut nicht durch, wie die aufgebaut sind, und wie die dann auch wirklich funktionieren....

und wwenn man danach mal suchst bekommt man sehr viel mist geliefert....

muss odch irgendwie noch ne andere simple lösung geben, außer regex....

Link zu diesem Kommentar
Auf anderen Seiten teilen

das mit Regex ist zwar ne nette sache, jedoch steige ich da absolut nicht durch, wie die aufgebaut sind, und wie die dann auch wirklich funktionieren....

Der Wikiartikel ist wirklich sehr gut, also wirklich mal Stück für Stück durcharbeiten.

Ich mache jetzt mal eine "Mega-Kompakt-Minimalistische-Schnell-Einführung" in reguläre Ausdrücke. Also wir haben einen String / Zeichenkette als Grundlage, die wir überprüfen wollen, d.h. wir wollen wissen, ob eben diese Zeichenkette irgendeiner Struktur entspricht.

Beispiel 1

Zeichenkette: ab

Regulärer Ausdruck: ab

d.h. z.B. AB würde nicht als passend gewertet werden, ebenso wie xy usw

Beispiel 2

Zeichenkette: aaaaaabbbbbbbbbbbbbb

also eine Zeichenkette, die eine beliebige Anzahl an a's und dann eine beliebige Anzahl von b's enthält (jeweils Kleinbuchstaben)

regulärer Ausdruck: (a+)(b+)

+ (oder auch *) sind so genannte Quantoren, also d.h. das Zeichen kommt "mehrfach" vor, * heißt einfach >= 0, + eben dann einfach > 0

d.h. hier wäre der Ausdruck ab gültig oder eben mehrere a's und mehrere b's

(als Hinweis, die Prüfung "genauso viele a's wie b's geht nicht mit regulären Ausdrücken, denn die reguläre Ausdrücke können keine Anzahlen vergleichen, als weiterführenden Hinweis Pumping-Lemma )

Beispiel 3

Zeichenkette: 023124543

also wir wollen Prüfen, ob eine Zeichenkette eine Natürliche Zahl ist, d.h. eine beliebe Anzahl von den Ziffern 0 bis 9 ist (a012 wäre dann nicht gültig)

regulärer Ausdruck: \d+ [alternativ geht auch: (0|1|2|3|4|5|6|7|8|9)+ oder (0-9)+ ]

Für eine Ziffer gibt es den Ausdruck \d und eben kombiniert mit einem Quantor

Beispiel 4

Zeichenkette: 11tzzzzz4235fbz4r5432ufbazu / 23234525fasfafdas@123465

etwas allgemeiner gesagt, ich möchte prüfen, ob eine Zeichenkette mit einer natürlichen Zahl beginnt, dann eine Anzahl beliebiger Buchstaben, die keine Zahlen sind, kommt und dann eine beliebige Anzahl (oder auch keine) an Zeichen (Zeichen, Zahlen oder auch Sonderzeichen) folgt.

regulärer Ausdruck: (\d+)([A-Za-z]+)(.*)

Also das ganze in die 3 Teile zerlegt;

natürlichen Zahl Beginn: (\d+)

eine Anzahl beliebiger Buchstaben: ([A-Za-z]+)

beliebige Anzahl (oder auch keine) an Zeichen (.*)

Also der reguläre Ausdruckt ermöglicht es eine Zeichenkette zu prüfen, ob sie eben einer gewissen Struktur entspricht. Du kannst halt jedes einzelne Zeichen Deiner Eingabe prüfen (wie gesagt über deren ASCII Codes, den Hinweis auf Unicode erspare ich hier mal, gerade im Webbereich, sollte man an das richtige Encoding denken !) oder Du nutzt halt eben reguläre Ausdrücke. Die regulären Ausdrücke sind eben allgemeiner und ermöglichen es eben, dass der Code nicht mit unnötigen Einzelprüfungen der Character aufgebläht wird. Zu Deinem Problem im Detail: Du willst prüfen, ob eine Zeichenkette eine Ziffer enthält, d.h. zerlege also Deine Zeichenkette, so dass Du die Teile prüfen kannst (wie in Bsp 4), wenn das nicht geht, zerlege die Teile wieder (Rekursion).

Allgemein formuliert stellst Du die Frage: Welche Struktur muss das Passwort haben?

Also z.B. Passwort muss mit einem Buchstaben (gross oder klein) beginnen, dann muss irgendwann eine Ziffer folgen und danach mindestens eine Ziffer oder Buchstabe (also eine kleine Abwandlung von Bsp 4). Schau Dir zu den Beispielen den Wikipedialink an

HTH

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...