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

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.
#3
1x
vote_ok
von bmt (50 Punkte) - 05.12.2014 um 15:22 Uhr
Lösung zu Passwortgenerator als Form umgesetzt:

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace pwd1
{
  public partial class Form1 : Form
  {
    public Form1 ( )
    {
      InitializeComponent ();
    }

    private void button1_Click ( object sender, EventArgs e )
    {
      Close ();
    }
   
    private void button2_Click ( object sender, EventArgs e )
    {
      if (numTextBox1.TextLength != 0)
        try {
      
          int laenge = Convert.ToInt32(numTextBox1.Text);

          //a=1; A=2; 1=4

          char[] lower_case = new char[] { 'z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a', };
          char[] upper_case = new char[] { 'Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A', };
          char[] numbers = new char[] { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };
          char[] symbols = new char[] { '²', '³', '{', '[', ']', '}', '\\', '^', '°', '!', '"', '§', '$', '%', '&', '/', '(', ')', '=', '?', '`', '´', '+', '*', '~', '#', '\'', '-', '_', '.', ':', ',', ';', '<', '>', '|' };

          System.Text.StringBuilder pool = new System.Text.StringBuilder();

          if (checkBox1.Checked)
            pool.Append(lower_case);

          if (checkBox2.Checked)
            pool.Append(upper_case);

          if (checkBox3.Checked)
            pool.Append(numbers);

          if (checkBox4.Checked)
            pool.Append(symbols);

          if ((!checkBox1.Checked) && (!checkBox2.Checked) && (!checkBox3.Checked) && (!checkBox4.Checked)) {
            MessageBox.Show(String.Format("Nothing selected!"), "Results", MessageBoxButtons.OK);
            Close();
          }
              Random rnd = new Random();

              string passwd = "";

              for (int i = 1; i <= laenge; i++) {
                char passwd_tmp = pool[rnd.Next(pool.Length)];
                passwd = passwd + passwd_tmp;
              }
        
              textBox1.Text = passwd;
          } catch {
            Close();
        }
    }
  }
}

mit zusätzlicher Klasse:
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Text;

namespace pwd1 {
  /// class downloaded at http://dotnet-snippets.de/snippet/numtextbox-kurzversion/1444 2014.12.05
  /// class created by  Martin Dauskardt
  
  class NumTextBox:System.Windows.Forms.TextBox
  {
      //Constructor
      public NumTextBox()
      {
          //Aufruf von Context Menü unterbinden.
          this.ShortcutsEnabled = false;

          //KeyPress Ereignis anmelden
          this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(NumTextBox_KeyPress);
      }

      void NumTextBox_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
      {
          //Prüfung, ob eine Zahl oder BackSpace ausgelöst wurde
          if ("1234567890\b".IndexOf(e.KeyChar.ToString()) < 0)
          {
              //Bei Abweichung Ereignis verwerfen
              e.Handled = true;
          }
      }
  }
}

Kommentare:

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

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