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

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.
#6
vote_ok
von Sebastian89 (80 Punkte) - 26.02.2015 um 12:56 Uhr
Funktionalität für ein Zufälliges Passwort ohne irreführende Zeichen wie I und l.

Quellcode ausblenden C#-Code
void Main()
{
	GeneratePassword(16, PasswordType.UpperLetter | PasswordType.LowerLetter | PasswordType.Numerics | PasswordType.SpecialCharacter).Dump();
}

public string GeneratePassword(int length, PasswordType type)
{
	char[] upperLetter = new[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
	char[] lowerLetter = new[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
	char[] numeris = new[] { '2', '3', '4', '5', '6', '7', '8', '9' };
	char[] specialCharacters = new[] { '!', '$', '%', '#', '?', '+', '-', '*', '/', '_', ':', '.' };

	string password = string.Empty;
	List<char[]> allowedCharacters = new List<char[]>();
	
	if ((type & PasswordType.UpperLetter) == PasswordType.UpperLetter)
		allowedCharacters.Add(upperLetter);
	
	if ((type & PasswordType.LowerLetter) == PasswordType.LowerLetter)
		allowedCharacters.Add(lowerLetter);
	
	if ((type & PasswordType.Numerics) == PasswordType.Numerics)
		allowedCharacters.Add(numeris);
	
	if ((type & PasswordType.SpecialCharacter) == PasswordType.SpecialCharacter)
		allowedCharacters.Add(specialCharacters);
		
	Random random = new Random();
	for (int i = 0; i < length; i++)
	{
		char[] characters = allowedCharacters[random.Next(0, allowedCharacters.Count)];
		password += characters[random.Next(0, characters.Length)].ToString();
	}
	
	return password;
}

[Flags]
public enum PasswordType
{
	UpperLetter = 0x01, 
	LowerLetter = 0x02, 
	Numerics = 0x04,
	SpecialCharacter = 0x08
}

Kommentare:

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

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