Passwort Generieren

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von SAR-71.

    Passwort Generieren

    Heyho ich habe da ein kleines problem undzwar folgendes.

    ich möchte gerne einen zufallsgenerator erstellen der ein passwort ausgibgt, das klappt auch soweit,
    nun möchte ich gerne das ich auswhlen kann zwischen

    ABC, abc, 123, und Spezialchars,

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles gen.Click
    3. TextBox1.Text = ""
    4. For i As Integer = 1 To nud.Value
    5. Next
    6. Generate()
    7. End Sub
    8. Public Function Generate() As Object
    9. Dim strName As Object
    10. Dim strInput1 As Object
    11. Dim strInput2 As Object
    12. Dim strInput3 As Object
    13. Dim strInput4 As Object
    14. strName = ""
    15. strInput1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    16. strInput2 = "abcdefghijklmnopqrstuvwxyz"
    17. strInput3 = "0123456789"
    18. strInput4 = "äöüÄÖÜߧ$&/-_!"
    19. End Function
    20. End Class


    ich habe bis jetzt halt nur deklarationen vorgenommen, weil ich echt auf dem schlauch stehe wie ich es dort nun verpacken muss das, wenn ich checkAB und check12 angeklickt habe, der aus dem input string 1 und 3 einen zufallsstring in der textbox ausgibt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „/c/“ ()

    In wie weit klappt es und in wie weit stehst du auf dem Schlauch?

    Wenn du sagst es klappt soweit, gehe ich davon aus, das zumindest etwas generiert wird.

    Dann nurnoch über Conditions den Fundus an möglichen Zeichen anpassen O.o
    Achte darauf das du die richtigen Datentypen verwendest. Deine Performance leider darunter, dass du "Object" anstatt "String" verwendest.
    Weiterhin hat deine Funktion keine Return-Klausel.
    Und deine Schleife ist unsinnig, da wird ja gar nichts gemacht.

    Du solltest dir mal ganz dringend die Grundlagen anschauen.


    Mfg.
    SAR
    also ich kann den code jetzt soweit fortsetzen das ich
    ein statisches pw generieren kann das eine gleiche anzahl von buchstaben hat.
    dazu muss ich aber quasi die nud.value herausnehmen.

    das möchte ich nicht.

    ich möchte das ich angebe in der nud.value 7
    und auf generate klicke, je nachdem welche checkbox ich auf true habe ein 7stelliges random pw erstellt wird :D


    meine frage war wohl nicht klar,
    ich frag also deutlich

    wie muss ich fortsetzen damit ich am ende, wenn ich 2 checkboxen aktiv habe, und auf generate klicke unter berücksichtigung der nud.value die textbox ein zufällig zusammengewürfeltes passwort der strings die mit einbezogen werden sollen ausgibt?

    ich hatte es schonmal ansatzweise versucht aber da hat mich der code so überrascht das ich das project komplett verworfen habe und neu begonnen bin
    Ich gehe mal davon aus, dass Du den Hinweis Option Strict On bereits eingearbeitet hast.
    Pack die Quellstrings in die Klasse und übergib einen davon der Prozedur Generate() als Parameter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Was bitteschön ist nud? Bin ich blind? (Nu ernsthaft... ich sehe nud in Verwendeung, aber nicht wo es herkommt)

    Warum statisch oder nicht statisch? Du kannst dir doch einfach merken wie lange das PW werden soll oder die Länge random bestimmen?

    Poste mal weiteren Code... weil Generate sieht nicht sehr generierend aus. Teile mit uns mal deinen Ansatz, wie du im etwa denkst. (Es kann ja nicht sein das du garkeine Vorstellung davon hast wie es laufen könnte)
    Hier mal ein Bespiel wie deine Generate-Funktion aussehen könnte, damit sie auch mal was generiert.

    VB.NET-Quellcode

    1. Function Generate (ByVal Numbers As Boolean, ByVal Symbols As Boolean, ByVal Length As Integer) As String
    2. Dim Keys As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 'Der Buchstabensalat der bei jedem Passwort dabei ist
    3. Dim r As New Random 'Die Zufalls-Klasse
    4. Dim Output As String = String.Empty 'Der Output
    5. If Numbers then 'Hier wird geguckt ob Zahlen dabei sein sollen
    6. Keys &= "0123456789" 'Falls ja, werden die auch zum Salat hinzugefügt
    7. End If
    8. If Symbols then 'Das selbe Spiel mit den Sonderzeichen
    9. Key &= "äöüÄÖÜߧ$&/-_!"
    10. End If
    11. For i As Integer = 0 to Length 'Diese Schleife macht im Grunde die ganze Arbeit
    12. Output &= Key(r.Next(0, Key.Length - 1)) 'Es wird immer ein Zufallsbuchstabe aus dem Salat genommen und in den Output geschmissen
    13. Next
    14. Return Output 'Und hier gibt die Funktion den Output zurück
    15. End Function


    Der Code ist nicht astrein und den hab ich mal eben per Hand geschrieben.
    Jedoch sollte er dir ziemlich gut zeigen, wie dein Vorhaben aussehen KÖNNTE.



    Mfg.
    SAR
    ich verwirr mich grade selbst

    ich möchte ja eben nicht das es immer xx zahlen groß ist.

    ich hab numericupdown drin.
    da möchte ich jetzt mit entscheiden können ob es nur 6 oder 12 zeichen groß werden soll.

    das soll in verbindung mit checkboxen die die strings auf true setzen geschehen und draus soll sich das programm random eine buchstabenfolge zusammenschustern.

    ich lerne vb noch, daher bitte ich um verständnis wenn es nicht alles sofort klar ist was ich hier verlange bzw erfrage ;D

    E: wieso habe ich grade das gefühl das ich es mir sau schwer mache? und wenn man mal den code von sar anguckt, es doch relativ einfach ist -.-

    danke. ich werd mich dahinter setzen, und versuchen alles richtig zu verstehen^^
    @/c/: Hast Du eigentlich überhaupt einen Plan, was Du willst?
    Beschreibe doch bitte mal den Ablauf verbal, dann sehen wir weiter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. For i As Integer = 0 to Length 'Diese Schleife macht im Grunde die ganze Arbeit
    2. Output &= Key(r.Next(0, Key.Length - 1)) 'Es wird immer ein Zufallsbuchstabe aus dem Salat genommen und in den Output geschmissen
    3. Next


    Hier steht der entsprechende Code drinne.

    Du kannst length durch deine Max-Anzahl ersetzen, dann macht es was du willst.
    Wozu diese Buchstabenstrings? Es geht auch einfacher:

    VB.NET-Quellcode

    1. Dim rnd As New Random
    2. Dim Wert As Integer = rnd.Next(Asc("A"), Asc("z"))
    3. Dim Zufallsbuchstabe As Char = Chr(Wert)

    Quadsoft schrieb:

    Wozu diese Buchstabenstrings?

    buchstaben, Zahlen, sonderzeichen ... Ja, Nein, Sowohl als auch ...

    total = ""
    total &= if(BuchstabenCB.Checked, BuchstStr, String.Empty)
    total &= if(ZahlenCB.Checked, ZahlenStr, String.Empty)
    usw usw
    ...
    If total.length = 0 then throw irgendeineexception
    ...
    dim r as new random
    dim out as new stringbuilder
    for i = 1 to nud.value
    out.append(total(r.next(0,total.length)))
    next i
    return out.tostring


    PSEUDOCODE!!!!
    @Quadsoft:
    Der Code kommt mir doch bekannt vor.
    Kann es sein, dass Du der Meinung bist, nach "Z" kommt "a"?
    Weil bei Deinem Code des öfteren krumme Zeichen kommen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    picoflop schrieb:

    buchstaben, Zahlen, sonderzeichen ... Ja, Nein, Sowohl als auch ...

    Äh, was wolltest du damit ausdrücken?

    RodFromGermany schrieb:

    Kann es sein, dass Du der Meinung bist, nach "Z" kommt "a"?

    Nein, guck dir die ASCII-Tabelle an. Im Bereich zwischen Groß- und Kleinbuchstaben sind halt nen Paar Sonderzeichen. Man müsste dann die "falschen" Werte noch herausfiltern. War ja nur ein Beispiel!

    SAR-71 schrieb:

    Ich finde es viel einfacher (für den Programmier), wenn man sehen kann, welche Zeichen möglich sind.


    Wenn man ASCII kennt, dann "sieht" man das auch.
    Dazu muss ich mir aber ne ASCII-Tabelle zur Hand nehmen.
    Oder ich schreib mir alle möglichen Buchstaben und Sonderzeichen als Kommentar hin.

    Nachteil für mich: Ich kann damit nicht mehr vernünftig arbeiten ohne immer tausend Zeilen an Kommentaren dazuarbeiten zu müssen.
    Eine Zeile mit den Buchstaben langt mir voll und ganz aus. Da muss ich mir nicht so einen Salat hinballern.


    Mfg.
    SAR

    SAR-71 schrieb:

    Eine Zeile mit den Buchstaben langt mir voll und ganz aus.
    :thumbup:
    Schreib das Programm so, dass Du es in einem halben Jahr immer noch verstehst.
    Wenn etwas unklar ist (ein LINQ-Ausdruck z.B.), schreib Dir einen Kommentar hin.
    Ich hab bei mir bemerkt, dass zu viele Kommentare auch nicht gut sind, die verwirren dann ggf.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany:
    Für mich ist sowas unmissverständlich ^^:

    VB.NET-Quellcode

    1. If Numbers then
    2. Keys &= "0123456789"
    3. End If
    4. If Symbols then
    5. Key &= "äöüÄÖÜߧ$&/-_!"
    6. End If


    Aber jedem das seine. Aber das was du mit Kommentaren meinst ist ziemlich wahr.
    Wenn ich weiß, dass nur ich damit arbeite, dann mach ich keine Kommentare rein.



    Mfg.
    SAR