Passwordverschlüsselung!



  • Also, ich möchte in mein Programm eine Passwordverschlüsselung einbauen, ich hab mir einen fertigen Shake Algorithmus aus einem Beitrag genommen und diesen eingebaut, nun habe ich nur ein Problem beim Vergleich aus der Textdatei.

    AnsiString c = InputBox("Login", "Username eingeben:" , "");
    
    AnsiString d = InputBox("Login", "Password eingeben:" , "");
    

    Dies ist zozusagen der Login-Screen.

    und dann versuche ich mit folgendem Vergleich das eingegebene Passwort mit dem eingespeicherten Codierten zu vergleichen:

    for (int z = 0; z < List->Count; z++)
    {
    
            if (List->Strings[z] == c)
            {
            AnsiString counter = List->Strings[z+1];
    
                    if (counter == HIERfehltmir die Bedinung!?!?)
                    {
                    ShowMessage ("password akzeptiert");
    
                    }
    
            ShowMessage ("Benutzername gefunden");
            }
    
    }
    

    Das codierte passwort steht eine Zeile unter dem Usernamen, also sieht die Textdatei beispielsweise so aus:

    Auszug aus Textdatei:
    
    crooklyn
    S8NzAtSC
    crook
    SBN4AmSQ
    dominik
    gY5f5V
    

    Nun möchte ich den bei AnsiString d eingegebenen Wert mit dem codierten vergleichen.

    Dies ist der Codier Algorithmus:

    AnsiString TForm1::Coded(AnsiString str)
    {
            AnsiString shake="mn7bvc6xyYXC4VBN3Mlkj8hgf5dsaASDFG9HJKLpoiuz1trewq0QWERTZU2IOP"; //Selbst mal schütteln
            AnsiString normal="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            AnsiString codiert;
            for (int i=1;i<=str.Length();i++) {
                    codiert += shake.SubString(normal.Pos(str.SubString(i,1))+1,1);
                    codiert += shake.SubString(random(52)+1,1); //Verwirrung
            }
            return codiert;
    }
    
    //---------------------------------------------------------------------------
    AnsiString TForm1::Decode(AnsiString str)
    {
            AnsiString normal="mn7bvc6xyYXC4VBN3Mlkj8hgf5dsaASDFG9HJKLpoiuz1trewq0QWERTZU2IOP"; //war voher shake
            AnsiString shake="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            AnsiString decodiert;
            for (int i=1;i<=str.Length();i++) {
                    decodiert += shake.SubString(normal.Pos(str.SubString(i,1))-1,1);
                    i++;
            }
            return decodiert;
    }
    


  • Hallo

    soweit ich das verstanden habe, fehlt doch nur

    if (counter == Coded(d))
    

    bis bald
    akari



  • das problem hat sich erledigt, ich hab es gelöst, danke 😉


Anmelden zum Antworten