Passwortcreator



  • Ich und ein kollege, versuchen grad ein Passwortcreator zu entwickeln, das will aber net so, wie wir es gern hätten.
    Nach dem Kompelieren, tauchen leerzeichen im Passwort auf und unbekante symole, die nicht programmiert wurden.

    der code ist:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <windows.h>
    #include <string.h>
    
    int fkt(int i, int y)
    {
    	srand(time(NULL));
    	return((rand()%y)+i);
    }
    
    int main()
    {
    	int eingabe;
      int i, x, y;
      char zeichen[]={"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"§$%&/()=?`'#{}\+-*<>,.;:-_"};
    
      y = strlen(zeichen);
    
      system("title Auftrag: PW Generator");
    	scanf("%d",&eingabe);
    
    		for(i=0;i<eingabe;i++)
        {
           printf("%c",zeichen[fkt(i,y)]);
           }
    printf("\n\n");
    system("PAUSE");
    return 0;
    }
    

    wir erbitten hilfe



  • #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <windows.h>
    #include <string.h>
    
    int fkt(int y)
    {
        return rand()%y;
    }
    
    int main()
    {
        srand(unsigned(time(NULL)));
        int eingabe;
        int i, x, y;
        char zeichen[]={"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"§$%&/()=?`'#{}\+-*<>,.;:-_"};
    
        y = strlen(zeichen);
    
        system("title Auftrag: PW Generator");
        scanf("%d",&eingabe);
    
        for(i=0;i<eingabe;i++)
        {
           printf("%c",zeichen[fkt(y)]);
        }
        printf("\n\n");
        system("PAUSE");
        return 0;
    }
    

    So, kleiner, aber feiner Fehler. Du übergibst in der for-Schleife die Variable i. Sagen wir mal, ich gebe 123 ein, d.h. an die Funktion wird 123 übergeben, womit ich über den Speicher des char-Arrays hinausgehe, da ich z.B. bis 123 randomiere und würde die Zahl 100 zufällig genommen werden, würde das Programm versuchen auf zeichen[100] zu zugreifen. Also übergibst du nur die Länge des char-Array, womit man in dem Bereich der Länge des char-Arrays randomieren kann und machst das einfach so oft, wie eingegeben wurde. Das Programm funktioniert fehlerfrei.

    Edit:

    srand(unsigned(time(NULL)));
    

    Bitte nur einmal in einem programm benutzen, das langt. Du hast es immer wieder bei jedem Funktionsaufruf gemacht, was falsch ist.



  • Danke für die Hilfe



  • als alternative....

    --------- bite here ------------------

    #include <stdlib.h>
    #include <stdio.h>

    static const char konsonanten[] = "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz0123456789"; // k=rand() % 52;
    //static const char konsonanten[] = "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz"; // k=rand() % 42;
    static const char vokale[] = "AEIOUaeiou";

    int i=0;

    int k=0;
    int v=0;

    int main(int argc, char *argv[])
    {
    srand(time(0));

    //for(i=0; i < 4; i++) // 8stelliges Kennwort
    for(i=0; i < 8; i++) // 16stelliges Kennwort
    {
    k=rand() % 52;
    //k=rand() % 42;
    v=rand() % 10;

    printf("%c", konsonanten[k]);
    printf("%c", vokale[v]);
    }

    return 0;
    }

    --------- bite here ------------------


Anmelden zum Antworten