Verschlüsseln von Passwörtern



  • Schreibe zur Zeit eine benutzer Datenbank. in der wird der Name, Vorname, Passwort, usw angegeben und in eine Datei geschrieben. Wie kann ich jetzt das Passwort verschlüsseln(bitweise invertieren). Und irgenwann muss ich das Passwort wieder entschlüsseln.



  • Hi

    Benutz doch einfach eine der verfügbaren opensource API's für zb. AES oder welchen Algorithmus du auch immer verwenden willst. MIRACL bietet eine einfache Implementierung dieses Algorithmus.

    Ein einfaches XOR kann natürlich auch reichen, je nachdem wie sicher die Sache sein soll. Du musst dir im Prinzip nur den Schlüssel überlegen und ihn auf die Passworte anwenden. Wenn das PW länger als der Schlüssel ist kannst du den Schlüssel ja erweitern in dem du ihn einfach wieder hinten anhängst und so einen Schlüsselstrom von sich wiederholenden Schlüsseln erzeugst. Das ist nicht sonderlich sicher aber ziemlich einfach.



  • Ich habe nichts in der Hilfe gefunden, kannst mir nicht jemand ein einfaches beispiel machen



  • bronstein,
    schau Dich mal bei www.vclcomponents.com unter der Kategorie "Compression, Encryption" um.
    Als Alternative zum Speichern von verschlüsselten Passwörtern bietet sich auch die Verwendung von Hash-Werten an. Indy kann das.



  • Es giebt aber noch die einfache Shake-methode:

    //---------------------------------------------------------------------------
    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;
    }
    //---------------------------------------------------------------------------
    

    Im Header nicht Vergessen!

    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
            TEdit *Edit1;
            TLabel *Label1;
            TLabel *Label2;
            TButton *Button1;
            void __fastcall Button1Click(TObject *Sender);
    private:	// Anwender-Deklarationen
    public:		// Anwender-Deklarationen
            AnsiString Coded(AnsiString str);
            AnsiString Decode(AnsiString str);
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    

    Und zum Testen:

    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
            Label1->Caption = Coded(Edit1->Text);
            Label2->Caption = Decode(Label1->Caption);
    }
    //---------------------------------------------------------------------------
    

    gruß promicha



  • schau mal hier nach
    http://www.bytesandmore.de/rad/

    dort gibt es die base64-verschlüsselung für ansistring. vielleicht ist es ja das was du suchst



  • Hi

    Base64 ist kein guter Verschlüsselungsalgorithmus, weil er ohne Schlüssel invertierbar ist. Es ist der Prototyp für Verschlüsselungen aber selbst keine gute Methode. Da kann er den Text auch "plain" abspeichern.



  • prolog schrieb:

    Base64 ist kein guter Verschlüsselungsalgorithmus

    Ich würde nicht mal so weit gehen, das Wort "Verschlüsselung" in Verbindung mit Base64 überhaupt zu verwenden. Man braucht nur ein paar Sekunden, um Daten als Base64-codiert zu identifizieren. Der Zeichenvorrat ist halt sehr charakteristisch ...



  • Ich muss jetzt doch aber eine Char folge verschlüsseln. Vielleicht hat ja jemand ein Beispiel



  • dann schau doch in deine anderen posts... http://www.c-plusplus.net/forum/viewtopic.php?t=69358 🙄



  • dschensky schrieb:

    prolog schrieb:

    Base64 ist kein guter Verschlüsselungsalgorithmus

    Ich würde nicht mal so weit gehen, das Wort "Verschlüsselung" in Verbindung mit Base64 überhaupt zu verwenden. Man braucht nur ein paar Sekunden, um Daten als Base64-codiert zu identifizieren. Der Zeichenvorrat ist halt sehr charakteristisch ...

    Deswegen hab ich auch dazu geschrieben dass er ohne weiteres invertierbar ist. Nichts desto trotz gilt Base64 als Verschlüsselungsprototyp.


Anmelden zum Antworten