parent
9110108d24
commit
f8c387e83c
|
|
@ -0,0 +1,10 @@
|
||||||
|
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/27.0.5 Chrome/134.0.6998.205 Electron/35.3.0 Safari/537.36" version="27.0.5">
|
||||||
|
<diagram name="Seite-1" id="dzo3m-syK6zVxx0qf2iK">
|
||||||
|
<mxGraphModel dx="1213" dy="828" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||||
|
<root>
|
||||||
|
<mxCell id="0" />
|
||||||
|
<mxCell id="1" parent="0" />
|
||||||
|
</root>
|
||||||
|
</mxGraphModel>
|
||||||
|
</diagram>
|
||||||
|
</mxfile>
|
||||||
|
|
@ -3,27 +3,34 @@ import java.util.Scanner;
|
||||||
public class Passwort_Check {
|
public class Passwort_Check {
|
||||||
|
|
||||||
public static boolean checkLaenge(String passwort) {
|
public static boolean checkLaenge(String passwort) {
|
||||||
|
// Abfrage mind. Anzahl
|
||||||
return passwort.length() >= 20;
|
return passwort.length() >= 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkKleinBuchstaben(String passwort) {
|
public static boolean checkKleinBuchstaben(String passwort) {
|
||||||
|
// Abfrage der Kleinbuchstaben
|
||||||
return passwort.matches(".*[a-z].*[a-z].*[a-z].*");
|
return passwort.matches(".*[a-z].*[a-z].*[a-z].*");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkGrossBuchstaben(String passwort) {
|
public static boolean checkGrossBuchstaben(String passwort) {
|
||||||
|
// Abfrage der Grossbuchstaben
|
||||||
return passwort.matches(".*[A-Z].*[A-Z].*[A-Z].*");
|
return passwort.matches(".*[A-Z].*[A-Z].*[A-Z].*");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkZiffer(String passwort) {
|
public static boolean checkZiffer(String passwort) {
|
||||||
|
// Abfrage der Ziffern
|
||||||
|
|
||||||
return passwort.matches(".*[0-9].*[0-9].*[0-9].*");
|
return passwort.matches(".*[0-9].*[0-9].*[0-9].*");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkSonderZeichen(String passwort) {
|
public static boolean checkSonderZeichen(String passwort) {
|
||||||
|
// Überprüfung mit Regex durch Ausschluss
|
||||||
return passwort.matches(".*[!\\?\\$%&#@*+\\-=_.].*[!\\?\\$%&#@*+\\-=_.].*[!\\?\\$%&#@*+\\-=_.].*");
|
// [^A-Za-z0-9] Schließt alle ziffern und Buchstaben aus
|
||||||
|
// Ausschlus der Steuerzeichen:
|
||||||
|
// [^/t] schließt Tab aus
|
||||||
|
// [^/r] schließt Carriage Return aus
|
||||||
|
// [^/n] schließt Line Feed aus
|
||||||
|
return passwort.matches(".*[^A-Za-z0-9\t\r\n].*[^A-Za-z0-9\t\r\n].*[^A-Za-z0-9\t\r\n].*");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
// import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
public class Test_Passwort_Check {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCheckLaenge() {
|
||||||
|
// Länge ist zu kurz
|
||||||
|
assertFalse(Passwort_Check.checkLaenge("KurzesPasswort123!"));
|
||||||
|
assertFalse(Passwort_Check.checkLaenge("Hello Wolrd"));
|
||||||
|
assertFalse(Passwort_Check.checkLaenge("qwertzuiopasdfghjkl"));
|
||||||
|
assertFalse(Passwort_Check.checkLaenge("1234567890qwertzuio"));
|
||||||
|
// richtige Länge
|
||||||
|
assertTrue(Passwort_Check.checkLaenge("LangesPasswortMit123!@#"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCheckKleinBuchstaben() {
|
||||||
|
// zu wenig Kleinbuchstaben
|
||||||
|
assertFalse(Passwort_Check.checkKleinBuchstaben("ABCDEF123!@#")); // keine Kleinbuchstaben
|
||||||
|
assertFalse(Passwort_Check.checkKleinBuchstaben("aB123")); // nur 1 Kleinbuchstaben
|
||||||
|
assertFalse(Passwort_Check.checkKleinBuchstaben("HELLO!WorLD!ICHLIEBEJAVA")); // nur 2 Kleinbuchstaben
|
||||||
|
|
||||||
|
// genügend Kleinbuchstaben
|
||||||
|
assertTrue(Passwort_Check.checkKleinBuchstaben("abc DEF 123!@#"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCheckGrossBuchstaben() {
|
||||||
|
// zu wenig Großbuchstaben
|
||||||
|
assertFalse(Passwort_Check.checkGrossBuchstaben("abcdef123!@#")); // keine Grossbuchstaben
|
||||||
|
assertFalse(Passwort_Check.checkGrossBuchstaben("aB123")); // nur 1 Grossbuchstaben
|
||||||
|
assertFalse(Passwort_Check.checkGrossBuchstaben("aAB123")); // nur 2 Grossbuchstaben
|
||||||
|
// mind. 3 Großbuchstaben
|
||||||
|
assertTrue(Passwort_Check.checkGrossBuchstaben("ABCdef123!@#"));
|
||||||
|
assertTrue(Passwort_Check.checkKleinBuchstaben("HelloWorldichliebejava"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCheckZiffer() {
|
||||||
|
// zu wenig Ziffern
|
||||||
|
assertFalse(Passwort_Check.checkZiffer("abcdefABC!@#")); // keine Ziffern
|
||||||
|
assertFalse(Passwort_Check.checkZiffer("aB1")); // nur 1 Ziffer
|
||||||
|
assertFalse(Passwort_Check.checkZiffer("a2 B1")); // nur 2 Ziffer
|
||||||
|
// mid. 3 Ziffern
|
||||||
|
assertTrue(Passwort_Check.checkZiffer("abcABC123!@#")); // 3 Ziffern
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCheckSonderZeichen() {
|
||||||
|
// zu wenig Sonderzeichen
|
||||||
|
assertFalse(Passwort_Check.checkSonderZeichen("abcABC123")); // keine Sonderzeichen
|
||||||
|
assertFalse(Passwort_Check.checkSonderZeichen("abcABC123!")); // nur 1 Sonderzeichen
|
||||||
|
assertFalse(Passwort_Check.checkSonderZeichen("abcABC123!@")); // nur 2 Sonderzeichen
|
||||||
|
// mind. 3 Sonderzeichen
|
||||||
|
assertTrue(Passwort_Check.checkSonderZeichen("abcABC123!@#")); // 3 Sonderzeichen
|
||||||
|
// Überprüfung der speziellen Sonderzeichen
|
||||||
|
assertTrue(Passwort_Check.checkSonderZeichen("a b c d")); // Leerzeichen als Sonderzeichen
|
||||||
|
assertTrue(Passwort_Check.checkSonderZeichen("a b c d"));
|
||||||
|
|
||||||
|
assertFalse(Passwort_Check.checkSonderZeichen("\t\t\t")); // Tab als Sonderzeichen
|
||||||
|
assertFalse(Passwort_Check.checkSonderZeichen("\r\r\r")); // Carriage Return als Sonderzeichen
|
||||||
|
assertFalse(Passwort_Check.checkSonderZeichen("\n\n\n")); // Line Feed als Sonderzeichen
|
||||||
|
|
||||||
|
// Prüfe einzeln alle ASCII-Sonderzeichen (33–47, 58–64, 91–96, 123–126)
|
||||||
|
String asciiSonderzeichen = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
|
||||||
|
for (int i = 0; i < asciiSonderzeichen.length(); i++) {
|
||||||
|
String c = "" + asciiSonderzeichen.charAt(i);
|
||||||
|
assertFalse(Passwort_Check.checkSonderZeichen("abcABC123" + c + c)); // nur 2 Sonderzeichen
|
||||||
|
assertTrue(Passwort_Check.checkSonderZeichen("abcABC123" + c + c + c)); // 3 identische Sonderzeichen
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,104 +0,0 @@
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
// import static org.junit.Assert.assertNull;
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
public class Test_Passwort_Check_Gesamt {
|
|
||||||
@Test
|
|
||||||
public void testPasswortZuKurz() {
|
|
||||||
assertFalse(Passwort_Check.checkLaenge("Hello Wolrd"));
|
|
||||||
assertFalse(Passwort_Check.checkLaenge("qwertzuiopasdfghjkl"));
|
|
||||||
assertFalse(Passwort_Check.checkLaenge("1234567890qwertzuio"));
|
|
||||||
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
public void testPasswortKleinBuchstaben() {
|
|
||||||
assertFalse(Passwort_Check.checkKleinBuchstaben("HELLO!WorLD!ICHLIEBEJAVA"));
|
|
||||||
assertFalse(Passwort_Check.checkKleinBuchstaben("QWERTZUoPlYXCVBNMLKJHGFDS"));
|
|
||||||
assertFalse(Passwort_Check.checkKleinBuchstaben("1234567890QWERTZUIOP"));
|
|
||||||
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
public void testPasswortGrossBuchstaben(){
|
|
||||||
assertTrue(Passwort_Check.checkKleinBuchstaben("HelloWorldichliebejava"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCheckLaenge() {
|
|
||||||
assertFalse(Passwort_Check.checkLaenge("KurzesPasswort123!")); // < 20
|
|
||||||
assertTrue(Passwort_Check.checkLaenge("LangesPasswortMit123!@#")); // >= 20
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCheckKleinBuchstaben() {
|
|
||||||
assertFalse(Passwort_Check.checkKleinBuchstaben("ABCDEF123!@#")); // keine Kleinbuchstaben
|
|
||||||
assertFalse(Passwort_Check.checkKleinBuchstaben("aB123")); // nur 1 Kleinbuchstabe
|
|
||||||
assertTrue(Passwort_Check.checkKleinBuchstaben("abcDEF123!@#")); // 3 Kleinbuchstaben
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCheckGrossBuchstaben() {
|
|
||||||
assertFalse(Passwort_Check.checkGrossBuchstaben("abcdef123!@#")); // keine Großbuchstaben
|
|
||||||
assertFalse(Passwort_Check.checkGrossBuchstaben("aB123")); // nur 1 Großbuchstabe
|
|
||||||
assertTrue(Passwort_Check.checkGrossBuchstaben("ABCdef123!@#")); // 3 Großbuchstaben
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCheckZiffer() {
|
|
||||||
assertFalse(Passwort_Check.checkZiffer("abcdefABC!@#")); // keine Ziffern
|
|
||||||
assertFalse(Passwort_Check.checkZiffer("aB1")); // nur 1 Ziffer
|
|
||||||
assertTrue(Passwort_Check.checkZiffer("abcABC123!@#")); // 3 Ziffern
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCheckSonderZeichen() {
|
|
||||||
assertFalse(Passwort_Check.checkSonderZeichen("abcABC123")); // keine Sonderzeichen
|
|
||||||
assertFalse(Passwort_Check.checkSonderZeichen("abcABC123!@")); // nur 2 Sonderzeichen
|
|
||||||
assertTrue(Passwort_Check.checkSonderZeichen("abcABC123!@#")); // 3 Sonderzeichen
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMainMitUnsicheremUndSicheremPasswort() {
|
|
||||||
// Simulierte Benutzereingaben (1. Versuch unsicher, 2. Versuch sicher)
|
|
||||||
String simulatedInput = String.join("\n",
|
|
||||||
"kurz123", // zu kurz
|
|
||||||
"PasswortMit2BUCHSTABEN", // kein Sonderzeichen, keine Ziffern
|
|
||||||
"AbcAbcAbc123!@#", // zu kurz
|
|
||||||
"abcABC123!@#abcABC123!@#", // gültiges Passwort
|
|
||||||
""
|
|
||||||
);
|
|
||||||
|
|
||||||
// Eingabe simulieren
|
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(simulatedInput.getBytes());
|
|
||||||
System.setIn(in);
|
|
||||||
|
|
||||||
// Ausgabe abfangen
|
|
||||||
ByteArrayOutputStream outContent = new ByteArrayOutputStream();
|
|
||||||
PrintStream originalOut = System.out;
|
|
||||||
System.setOut(new PrintStream(outContent));
|
|
||||||
|
|
||||||
// Main-Methode ausführen
|
|
||||||
Passwort_Check.main(new String[]{});
|
|
||||||
|
|
||||||
// Wiederherstellen der Originalstreams
|
|
||||||
System.setOut(originalOut);
|
|
||||||
System.setIn(System.in);
|
|
||||||
|
|
||||||
String output = outContent.toString();
|
|
||||||
|
|
||||||
// Wichtige Ausgaben überprüfen
|
|
||||||
assertTrue(output.contains("Passwort ist zu kurz!"));
|
|
||||||
assertTrue(output.contains("Es fehlen Ziffern!") || output.contains("Es fehlen Sonderzeichen!"));
|
|
||||||
assertTrue(output.contains("Passwort ist sicher."));
|
|
||||||
assertTrue(output.contains("...und Tschüss"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/27.0.5 Chrome/134.0.6998.205 Electron/35.3.0 Safari/537.36" version="27.0.5">
|
||||||
|
<diagram name="Seite-1" id="dzo3m-syK6zVxx0qf2iK">
|
||||||
|
<mxGraphModel dx="1348" dy="920" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||||
|
<root>
|
||||||
|
<mxCell id="0" />
|
||||||
|
<mxCell id="1" parent="0" />
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dn1SLEveHeubebGqacrZ-1" target="dn1SLEveHeubebGqacrZ-10">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-1" value="Eingabe eines Passworts<br>String passwort" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="345" y="130" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-2" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="390" y="70" width="30" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="dn1SLEveHeubebGqacrZ-3" target="dn1SLEveHeubebGqacrZ-4">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-3" value="Überprüfung des Passworts auf Mindestlänge von 20" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="190" y="340" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="dn1SLEveHeubebGqacrZ-4" target="dn1SLEveHeubebGqacrZ-12">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-4" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="230" y="460" width="30" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-6" value="Überprüfung auf mindestens 3 Kleinbuchstaben" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="345" y="480" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-7" value="Überprüfung auf mindestens 3 Grossbuchstaben" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="500" y="480" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-8" value="Überprüfung auf mindestens 3 Sonderzeichen" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="650" y="480" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-9" value="Überprüfung auf mindestens 3 Ziffern" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="360" y="580" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="dn1SLEveHeubebGqacrZ-10" target="dn1SLEveHeubebGqacrZ-3">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-10" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="230" y="260" width="30" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-11" value="Eingabe eines verbesserten Passworts" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="20" y="370" width="120" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-12" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="40" y="450" width="30" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="dn1SLEveHeubebGqacrZ-14" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="200" y="630" width="30" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</root>
|
||||||
|
</mxGraphModel>
|
||||||
|
</diagram>
|
||||||
|
</mxfile>
|
||||||
Loading…
Reference in New Issue