C# :: Aufgabe #77 :: Lösung #11

14 Lösungen Lösungen öffentlich
#77

Passwortgenerator mit Parametern

Anfänger - C# 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.
#11
vote_ok
von stbehl (1640 Punkte) - 13.02.2018 um 16:15 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TrainYourProgrammer71
{
    class Program
    {
        static void Main(string[] args)
        {
            int laenge, kleinbuchstaben, grossbuchstaben, zahlen, sonderzeichen;
            Console.WriteLine("PASSWORTGENERATOR");
            Console.Write("Wie lang soll das Passwort sein: ");
            while (Int32.TryParse(Console.ReadLine(), out laenge) == false)
            {
                Console.WriteLine("Bitte geben Sie nur Zahlen ein!\n");
                Console.Write("Wie lang soll das Passwort sein: ");
            }
            Console.Clear();
            Console.WriteLine("Geben Sie an, was in dem {0} Zeichen langem Passwort vorkommen soll: ", laenge);
            Console.Write("Kleinbuchstaben: ");
            while (Int32.TryParse(Console.ReadLine(), out kleinbuchstaben) == false)
            {
                Console.WriteLine("Bitte geben Sie nur Zahlen ein!\n");
                Console.Write("Kleinbuchstaben: ");
            }
            Console.Write("Grossbuchstaben: ");
            while (Int32.TryParse(Console.ReadLine(), out grossbuchstaben) == false)
            {
                Console.WriteLine("Bitte geben Sie nur Zahlen ein!\n");
                Console.Write("Grossbuchstaben: ");
            }
            Console.Write("Zahlen: ");
            while (Int32.TryParse(Console.ReadLine(), out zahlen) == false)
            {
                Console.WriteLine("Bitte geben Sie nur Zahlen ein!\n");
                Console.Write("Zahlen: ");
            }
            Console.Write("Sonderzeichen: ");
            while (Int32.TryParse(Console.ReadLine(), out sonderzeichen) == false)
            {
                Console.WriteLine("Bitte geben Sie nur Zahlen ein!\n");
                Console.Write("Sonderzeichen: ");
            }

            if ((kleinbuchstaben + grossbuchstaben + zahlen + sonderzeichen) <= laenge)
            {
                Console.WriteLine(passwortGenerieren(laenge, kleinbuchstaben, grossbuchstaben, zahlen, sonderzeichen));
            }
            else
            {
                Console.WriteLine("Sie haben zu viele Zeichenwünsche für die ausgewählte Passwortlänge eingegeben. Das Programm wird beendet.");
            }
            
            Console.ReadKey();
        }

        static string passwortGenerieren(int länge, int kleinbuchstaben, int grossbuchstaben, int zahlen, int sonderzeichen)
        {
            Random zufall = new Random();
            string passwort = "";
            string ausgabe = "";
            char buchstabe;
            int zaehler = 0;
            string[] sonder = new string[] { "^", "!", "§", "$", "%", "&", "/", "(", ")", "=", "?", "`", "´", "+", "*", "~", "#", ".", ",", ";", ":", "-", "_", "<", ">", "|", "°" };

            while(passwort.Length < länge)
            {
                if (passwort.Length < kleinbuchstaben)
                {
                    buchstabe = Convert.ToChar(zufall.Next(97, 123));
                    passwort += buchstabe;
                }
                else if ((passwort.Length - kleinbuchstaben) < grossbuchstaben)
                {
                    buchstabe = Convert.ToChar(zufall.Next(65, 91));
                    passwort += buchstabe;
                }
                else if ((passwort.Length - kleinbuchstaben - grossbuchstaben) < zahlen)
                {
                    passwort += zufall.Next(0, 10);
                }
                else
                {
                    zaehler = zufall.Next(0, sonder.Length + 1);
                    passwort += sonder[zaehler];
                }
            }
            Console.WriteLine(passwort);
            for (int i = passwort.Length; i > 0; i--)
            {
                zaehler = zufall.Next(0, i);
                ausgabe += passwort[zaehler];
                passwort = passwort.Remove(zaehler, 1);
            }
            return ausgabe;
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben