Java :: Aufgabe #72 :: Lösung #3
5 Lösungen

#72
Passwortgenerator mit Parametern
Anfänger - Java
von pocki
- 27.11.2014 um 18:11 Uhr
Erstelle ein Programm/Funktion welche/s ein zufälliges Passwort erzeugt.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
#3

von thet1983 (800 Punkte)
- 14.10.2016 um 12:06 Uhr
Die Zeichenabfrage hab ich mir gespart, kann ja jeder gerne nachträglich einfügen.
mögliche Ausgabe:
Java-Code
SiCuSoft,Thomas Etzelsdorfer
mögliche Ausgabe:
Bitte geben Sie die Länge des Passwortes ein:
32
1. Passwort aus Kleinbuchstaben: snvhwbnubtflblraemtlqwhkuuqlpwtw
2. Passwort aus Grossbuchstaben: JMJMTWLVKNSRWWDIGHZZAFSOHXEAPVWF
3. Passwort aus Zahlen: 93830054787410324587924324808228
4. Passwort aus Sonderzeichen: #)).(++-$"+'-"+(!*%)"".%#&*%#+
5. Passwort aus Buchstaben (Gross & Klein): QFUCgdUOGVXcCKpELxOLqzdlldCfbiaL
6. Passwort aus Buchstaben (Gross & Klein & Zahlen): IRpdkiMvrsaGUO65TQwfgQ7qJntOzUt0
7. Passwort aus Gross & Klein & Zahlen & Sonderz.: I"(RH%U9mtq,$B4CQ7F#7,nxpCL"Jv1L
BUILD SUCCESSFUL (total time: 3 seconds)

package eu.sicusoft.etzelsdorfer.demos; import java.util.Random; import java.util.Scanner; /** * 2016 © SiCuSoft<br> * Password Creator Class * Diese Klasse stellt eine <code>public</code> Methode zur Verfügung <br>{@link getPwdLetter(Auswahl auswahl, int zeichenAnzahl)}<br>die * das gewuenschte Passwort ( Zeichenauswahl und Laenge ) ausgibt! * @author Etzelsdorfer Thomas * @since 2016-10-14 * @version 1.1.0 * ( Sonderzeichen hinzu gefügt ) * @version 1.0.0 * ( erstellung der klasse ) * */ public class CreatePwd { private static final int a = 97, z = 122 + 1; private static final int A = 65, Z = 90 + 1; private static final int rufZ = 33, backSlash = 46 + 1; private static final int z0 = 48, z9 = 57 + 1; private Random r; public enum Auswahl { KLEINBUCHSTABEN, GROSSBUCHSTABEN, ZAHLEN, KLEIN_GROSSBUCHSTABEN, BUCHSTABEN_ZAHLEN, BUCHSTABEN_ZAHLEN_SONDERZEICHEN, SONDERZEICHEN } public static void main(String[] args) { CreatePwd pwd = new CreatePwd(); Scanner scan = new Scanner(System.in); System.out.println("Bitte geben Sie die Länge des Passwortes ein: "); int laenge = scan.nextInt(); String ausgabe = String.format("\n1. %-50s %-10s \n2. %-50s %-10s \n3. %-50s %-10s \n4. %-50s %-10s \n5. %-50s %-10s \n6. %-50s %-10s \n7. %-50s %-10s", "Passwort aus Kleinbuchstaben:", pwd.getPwdLetter(Auswahl.KLEINBUCHSTABEN, laenge), "Passwort aus Grossbuchstaben:", pwd.getPwdLetter(Auswahl.GROSSBUCHSTABEN, laenge), "Passwort aus Zahlen:", pwd.getPwdLetter(Auswahl.ZAHLEN, laenge), "Passwort aus Sonderzeichen:", pwd.getPwdLetter(Auswahl.SONDERZEICHEN, laenge), "Passwort aus Buchstaben (Gross & Klein):", pwd.getPwdLetter(Auswahl.KLEIN_GROSSBUCHSTABEN, laenge), "Passwort aus Buchstaben (Gross & Klein & Zahlen):", pwd.getPwdLetter(Auswahl.BUCHSTABEN_ZAHLEN, laenge), "Passwort aus Gross & Klein & Zahlen & Sonderz.:", pwd.getPwdLetter(Auswahl.BUCHSTABEN_ZAHLEN_SONDERZEICHEN, laenge)); System.out.println(ausgabe); } /** * Methode gibt das erstellt Pwd bestehend aus Kleinbuchstaben zurük * * @param zeichenAnzahl, Anzahl der Zeichen * @param auswahl Auswahl der Zeichen (enum, Aufruf: * <code>Auswahl.KLEINBUCHSTABEN</code> * @return pwd */ public String getPwdLetter(Auswahl auswahl, int zeichenAnzahl) { StringBuilder sb = new StringBuilder(); // Stringbuilder für die einzelenen zufälligen Charakter char[] available1 = null; switch (auswahl) { case KLEINBUCHSTABEN: // nur kleinbuchstaben available1 = aTOz(); break; case GROSSBUCHSTABEN: // nur grossbuchstaben available1 = ATOZ(); break; case ZAHLEN: // nur zahlen available1 = zahlen(); break; case KLEIN_GROSSBUCHSTABEN: // gross und kleinbuchstaben available1 = concat(aTOz(), ATOZ(), null); break; case SONDERZEICHEN: // nur sonderzeichen available1 = soTOso(); break; case BUCHSTABEN_ZAHLEN: // gross, kleinbuchstaben und Zahlen available1 = concat(aTOz(), ATOZ(), zahlen()); break; case BUCHSTABEN_ZAHLEN_SONDERZEICHEN: // gross, kleinbuchstaben, zahlen, sonderzeichen char[] c = concat(aTOz(), ATOZ(), zahlen()); char[] c1 = soTOso(); available1 = concat(c, c1, null); break; } // erstellung des passwortes r = new Random(); int n = 0; // erstelle zeichen for (int i = 0; i < zeichenAnzahl; i++) { n = r.nextInt(available1.length); sb.append(available1[n]); } // rückgabe erstelltes pwd return sb.toString(); } /** * Methode verbindet mehrere arrays miteinander * @param a1 * @param a2 * @param a3 * @return concated array */ private char[] concat(char[] a1, char[] a2, char[] a3) { StringBuilder sb = new StringBuilder((a3 == null) ? a1.length + a2.length : a1.length + a2.length + a3.length); if (a3 == null) { sb.append(a1); sb.append(a2); } else { sb.append(a1); sb.append(a2); sb.append(a3); } return sb.toString().toCharArray(); } // private helper private char[] aTOz() { return getAvailableChar(a, z); } private char[] ATOZ() { return getAvailableChar(A, Z); } private char[] soTOso() { return getAvailableChar(rufZ, backSlash); } private char[] zahlen() { return getAvailableChar(z0, z9); } /** * Methode gibt ein char Array zurück die mit Zeichen aus der <br> * Ascii Tabelle befüllt wurde.<br> * * @param startAscii * @param endAscii * @return Verfügbare Zeichen aus der Ascii Tabelle */ private char[] getAvailableChar(int startAscii, int endAscii) { char[] c = new char[endAscii % startAscii]; for (int i = 0; startAscii < endAscii; i++) { c[i] = (char) startAscii; startAscii++; } return c; } }
SiCuSoft,Thomas Etzelsdorfer
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1