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.