Schlüssel aus Buchstaben erstellen



  • Mit folgender Methode, wollte ich mir einen zufälligen Schlüssel aus Buchstaben erstellen. Dieser sollte z.B. so aussehen -> "phjj" (besteht aus 4 KLEINbuchstaben)
    Nur leider funktioniert das irgendwie nicht, bei mir kommen aber leider keine Kleinbuchstaben raus, sondern mysteriöse Zeichen, wie z.B. -> "¶§↑☼"!!!??? Warum?
    Hier die Methode:

    string crypt::create_key()
    {
        string temp;
        for(int i=0;i<4;++i)
        {
            char character=create_value.rnd(97,122);
            temp=temp+character;
        }
        return temp;
    }
    

    create_value.rnd(97,122) = erstellt zufallszahl zwischen 97 u. 122

    MfG
    Stromberg



  • Naja wenn wir hier ascii haben würde ich eine explizite typumwandlung probieren.

    int a=1;

    //in c:
    char text = (char) a ;

    // in C++
    char text = char(a);

    solltest du in c++ mit strings arbeiten ist es vielleicht auch nicht schlecht string streams zu
    verwenden - die bauen dir den char auch richtig in den string ein.
    Oder zumindesten string += char verwenden.

    lg



  • So gehts auch nicht, immer noch merkwürdige Zeichen 😞

    string crypt::create_key()
    {
        string temp;
        for(int i=0;i<4;++i)
        {
            char character=char (create_value.rnd(97,122));
            temp +=character;
        }
        return temp;
    }
    

    MfG
    Stromberg



  • ja dann tuts mir leid - ich bin auch neu in c/c++
    aber debug das mal.
    bzw. gib einfach die chars aus wenn du sie erzeugst und jedesmal gleich den erzeugten string dazu.
    dann siehst ja wo der fehler ist.
    in deiner rand funktion oder beim zuweisen auf den string.

    lg



  • Jetzt gehts, meine Zufallsfunktion ging nicht richtig. Danke für deine Hilfe.
    MfG
    Stromberg



  • Sinnvoll wäre noch wenn du 97,122 durch 'a','z' ersetzt. Ist übersichtlicher und leichter zu verstehen und "sicherer".



  • Ich würde sogar noch weiter gehen und eine Tabelle aller erlaubten Zeichen erstellen, und aus ihr einen zufälligen Index wählen. Denn nicht in allen Zeichensätzen ist 'a' - 'z' eine ununterbrochene Folge.



  • Nicht? Sicher?



  • Zum Beispiel sind in EBCDIC-DF04 die Zeichen 'a'-'i' auf den Positionen 201-211 (dezimal), 'j'-'r' auf 221-231 und 's'-'z' auf 242-251.



  • Oh, dann werden den Außerirdischen wohl einiger meiner Programme um die Ohren fliegen. 😉


Anmelden zum Antworten