Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

1

23.08.2004, 22:18

Password Generator

Wie findet ihr diesen Workshop?

Insgesamt 16 Stimmen

6%

1 - Sehr gut (Man Lernt was neues!) (1)

25%

2 - Gut (Könnte ich gebrauchen) (4)

31%

3 - Befriedigend (5)

19%

4 - Ausreichend (Meiste wusste ich, aber Lerneffekt ist da) (3)

13%

5 - Mangelhaft (2)

6%

6 - Ungenügend (1)

Hi,

lange gab's ja kein Community Workshop mehr und nachdem das mit der Huffmann Komprimierung, diverse Nerven gekostet hatte und ich einsichtig sein musste, das eine Huffmann komprimierung vielleicht etwas zu "hoch/komplex" seine für einen Workshop, habe ich einen anderen entworfen.

Und hier ist er: Der PasswortGenerator. ;D

Ziel ist genau wie in den anderen Community Workshops z.B. BitWriter dieses kleine Tool zu einem funktionalen und vorallem ausgereiftem Programm zu machen.

Erweiterungspotenzial ist genug vorhanden.

Aber erstmal code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// ///////////////////////////////////////////////////////////////////////////

// Datei:        main.cpp

// ///////////////////////////////////////////////////////////////////////////

// Autor:        Patrick Ullmann

// Erstellt:     12.08.2004

// Änderungen:   12.08.2004 (Patrick)  Datei erstellt

// ///////////////////////////////////////////////////////////////////////////

// Beschreibung: Hauptdatei


// I N C L U D E S ///////////////////////////////////////////////////////////

#include <iostream>     // Für Input und Output, ganz klar.

#include <string>       // Für std::string, wofür wohl sonst? ;-)

#include <ctime>        // Für std::time(); in Zeile 83

#include <algorithm>    // Für std::random_shuffle (); in Zeile 63


// D E F I N I T I O N E N ///////////////////////////////////////////////////

    // size_t sollte es eigentlich überall geben und beschreibt den

    // größten Datentyp der vom Betriebssystem unterstützt wird

    // diverse Compiler bieten diesen Typen jedoch (noch) nicht!

    // Deshalb definieren wir ihn, falls es ihn nicht gibt.

#ifdef size_t
#ifdef _WIN32
typedef unsigned __int64 size_t;
#else
typedef unsigned int size_t;
#endif
#endif 

// F U N K T I O N E N ///////////////////////////////////////////////////////


// /////////////////////////////////////////////////

// GLOBAL

//

// Erstellt ein Passwort aus groß und klein Buchstaben

// sowie aus Zahlen und Zeichen.

//

// [in]  num_highWords: Anzahl der Großbuchstaben.

// [in]  num_lowWords : Anzahl der Kleinbuchstaben.

// [in]  num_numbers  : Anzahl der Zahlen.

// [in]  num_sings    : Anzahl der Zeichen. z.B. (§!/)

//

// [ret] Das Passwort.

// /////////////////////////////////////////////////

inline std::string generate_password (size_t num_highWords, 
                                      size_t num_lowWords, 
                                      size_t num_numbers, 
                                      size_t num_sings)
{
        // Die Zeichenketten.

    std::string  high_word_string    ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 

        // Temp-String für das Endergebnis.

    std::string  password            (""); 

        // Durchlaufe die HighWords

    for(size_t i=0; i<num_highWords; ++i) 
    {
            // Addiere einen zufälligen HighWord-Buchstaben auf den Temp-String.

        password += high_word_string[std::rand()%high_word_string.length()]; 
    }

        // Das Passwort nochmal durchmischen.

    std::random_shuffle(password.begin(), password.end());

        // Und ab damit

    return (password); 
} 

// /////////////////////////////////////////////////

// GLOBAL

//

// Einsprungspunkt des Programms

//

// [in]  argc: Anzahl der Argumenten.

// [in]  argv: Die Argumente.

// [in]  envp: Die Umgebugnsvariablen.

//

// [ret] Fehlercode.

// /////////////////////////////////////////////////

int main (int argc, char *argv[], char *envp[])
{ 
        // Random initialisieren

    std::srand (std::time(0)); 

        // Gib ein Passwort aus mit 

        //   20 Großbuchstaben

        // + 20 Kleinbuchstaben

        // + 10 Zahlen

        // +  0 Zeichen

        // -------------------

        // 50 Zeichen Passwort

    std::cout << generate_password(20,20,10,0); 

        // Damit die Console sich nicht direkt schließt.

    std::cin.get(); 

        // Sollte klar sein. ;-)

    return 0;
}


Was man erweitern könnte:
- Klassen, z.B. eine Passwort_Generator Class oder sowas in der Art.
- Kleinbuchstaben hineinfügen sowie Zahlen und Zeichen (Hier aufpassen wegen den EscapeSequenzen!)
- namespace?
- Mehr Funktionalität
uvm.

Kurz: Keine Grenzen sind vorhanden ;)

Bitte benutzt nur Standard-Funktionen und falls es nicht anders geht bitte die API-Funktionen mit #if, #endif und co. abgrenzen.

Und nun mal,
Happy Coding :rolleyes:

-Patrick :angel:

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

2

24.08.2004, 13:47

Hi

ein Geneator, der aussprechbare und somit leichtmerkende Passwörter erzeugt, fänd ich interessant. Aber sonst ist da doch nicht besonderes??[/list]

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

3

24.08.2004, 15:29

Ist zwar nicht viel neues bisher, aber ich denke, dass man in einem solchen Workshop doch immer mal was neues lernen könnte. Befriedigt mich also schon (auf die Umfrage beozogen :-D) :)
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

4

24.08.2004, 17:48

Nich viel neues, aber immerhin ein bisschen ;)
Da man aus diesem Workshop bissle was lernen konnte, gabs ne 3 :D

Anonymous

unregistriert

5

24.08.2004, 18:12

Ich hab mir mal etwas arbeit gemacht und die Funktion erweitert ;D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
inline std::string generate_password (size_t num_highWords, 
                                      size_t num_lowWords, 
                                      size_t num_numbers, 
                                      size_t num_signs)
{
        // Die Zeichenketten.

    std::string  high_word_string    ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 
    std::string  low_word_string     ("abcdefghijklmnopqrstuvwxyz"); 
    std::string  numbers_string      ("0123456789"); 
    std::string  signs_string        ("'!§$%&()=?{}~+-*/#~<>|^°_-.:,;"); 

        // Temp-String für das Endergebnis.

    std::string  password            (""); 

        // Durchlaufe die HighWords

    for(size_t i=0; i<num_highWords; ++i) 
    {
            // Addiere einen zufälligen HighWord-Buchstaben auf den Temp-String.

        password += high_word_string[std::rand()%high_word_string.length()]; 
    }

        // Durchlaufe die LowWords

    for(size_t i=0; i<num_lowWords; ++i) 
    {
            // Addiere einen zufälligen HighWord-Buchstaben auf den Temp-String.

        password += low_word_string[std::rand()%low_word_string.length()]; 
    }

        // Durchlaufe die Nummern

    for(size_t i=0; i<num_numbers; ++i) 
    {
            // Addiere einen zufälligen HighWord-Buchstaben auf den Temp-String.

        password += numbers_string[std::rand()%numbers_string.length()]; 
    }

        // Durchlaufe die Zeichen (signs)

    for(size_t i=0; i<num_signs; ++i) 
    {
            // Addiere einen zufälligen HighWord-Buchstaben auf den Temp-String.

        password += signs_string[std::rand()%signs_string.length()]; 
    }

        // Das Passwort nochmal durchmischen.

    std::random_shuffle(password.begin(), password.end());

        // Und ab damit

    return (password); 
} 


deadlus

6

25.08.2004, 12:06

sieht ganz so aus als ob das noch interessant werden könnte
*gespannt zuschau*

mfg Triac

7

25.08.2004, 15:35

Jetzt kann der Benutzer auch eingeben, wie viel er von was haben will:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
int main (int argc, char *argv[], char *envp[])
{
    int highWord, lowWord, numbers, signs;

        // Random initialisieren

    std::srand (std::time(0));

        // Fragt die Anzahl der

        //   Großbuchstaben

        // + Kleinbuchstaben

        // + Zahlen

        // + Zeichen

        // ab

    std::cout << "Anzahl Großbuchstaben: ";
    std::cin >> highWord;
    std::cout << "Anzahl Kleinbuchstaben: ";
    std::cin >> lowWord;
    std::cout << "Anzahl Zahlen: ";
    std::cin >> numbers;
    std::cout << "Azahl Zeichen: ";
    std::cin >> signs;

        // Gib ein Passwort aus mit

        //   <highWord> Großbuchstaben

        // + <lowWord> Kleinbuchstaben

        // + <numbers> Zahlen

        // + <signs>  Zeichen

        // -------------------

        // 50 Zeichen Passwort

    std::cout << generate_password(highWord,lowWord,numbers,signs);

        // Damit die Console sich nicht direkt schließt.

    std::cin.get();

        // Sollte klar sein. ;-)

    return 0;
}

8

28.08.2004, 12:17

also nen passwort-knacker fänd ich interessanter ^^

9

28.08.2004, 12:34

Zitat von »"Sk!p"«

also nen passwort-knacker fänd ich interessanter ^^

Dann eröffne hier doch auch so'n Workshop :D

afogel

Frischling

Beiträge: 60

Wohnort: München

Beruf: Schüler

  • Private Nachricht senden

10

28.08.2004, 12:58

gibst du server und hackst bruteforce was soll daran schwer sein? schwer isses nit entdeckt zu werden :D

mfg afogel
Das Anyon-Projekt
http://www.anyon.de/

Die freie Musikenzyklopädie
http://www.musikerwiki.de/

"My Software never has bugs. It just developes random features..."

Werbeanzeige