2009-06-27 17 views
4

Eine C/C++ - basierte CGI-Webanwendung erstellt eine temporäre Textdatei auf dem Server, solange der Benutzer angemeldet ist. Die Textdatei wird gelöscht, wenn der Benutzer sich abmeldet. Ich möchte diese Textdatei und auch den Inhalt der Datei verschlüsseln. Die Datei enthält Informationen wie Benutzername und Passwort.Was ist der beste Weg, um eine Textdatei in C/C++ zu verschlüsseln?

Was ist der beste Weg, dies zu tun?

EDIT: Ich sehe Bibliotheken vorgeschlagen werden. Mein Problem ist, dass ich nichts anderes als Standard-C++ - Bibliothek verwenden kann.

+0

Siehe auch http://stackoverflow.com/questions/674401/crypto-library-for-c –

Antwort

2

Ein Verschlüsselungsstandard, der derzeit als "sicher" gilt, ist AES (auch Rijndael genannt). Sie finden eine C++ - Implementierung unter Codeproject und an vielen anderen Stellen.

Bitte beachten Sie, dass Sie bei Verwendung von AES oder einem anderen symmetrischen Verschlüsselungsstandard den Verschlüsselungs-/Entschlüsselungsschlüssel in Ihrer Anwendung speichern müssen. Wenn jemand den Schlüssel entdeckt, kann er alle Dateien entschlüsseln, die Sie mit diesem Schlüssel verschlüsselt haben.

Wenn Ihre Anwendung unter Windows ausgeführt wird, können Sie auch DPAPI verwenden, um die verschlüsselten Informationen zu speichern.

+0

Eine gute Idee wäre, den Schlüssel prozedural zu generieren, damit REing schwieriger wird. RAM-Dump ist immer noch möglich, daher ist es wichtig, den Schlüssel in einem nicht sequentiellen Format zu behalten. – LiraNuna

+0

"Bitte beachten Sie, dass Sie bei Verwendung von AES oder einem anderen symmetrischen Verschlüsselungsstandard den Verschlüsselungs-/Entschlüsselungsschlüssel in Ihrer Anwendung speichern müssen. Wenn jemand den Schlüssel entdeckt, kann er alle Dateien entschlüsseln, die Sie mit diesem Schlüssel verschlüsselt haben." Genau deshalb kann/kann ich den rohen Schlüssel nicht in der ausführbaren Datei der App speichern. Der Schlüssel sollte durch eine Passphrase oder Ähnliches geschützt sein. –

3

Verwenden Sie eine wohlbekannte Bibliothek wie openssl und folgen Sie dem bekannten examples und halten Sie sich von plattformspezifischen Lösungen fern.

0

Überarbeitete Antwort.
Sie möchten Code zum Verschlüsseln und Entschlüsseln einer Datei verwenden, die mit Ihrem C++ - Code verwendet werden kann.
Es wäre absolut falsch, einen eigenen Code zu schreiben().

Aber Sie sagen, dass Sie keine Standardbibliotheken verwenden können.
Standardbibliotheken (und möglicherweise Open Source) sind wahrscheinlich der richtige Ansatz zum Implementieren der Verschlüsselung in Ihren Anwendungen. Wenn Sie wählen, um das nicht, es lässt Sie mit nur zwei Optionen,

  • Implementieren Sie Ihre eigene Version eines Standard-Verschlüsselungsalgorithmus (und Risiko Schwäche durch Fehler Sie machen)
  • Verwenden Sie ein ‚System‘ Call von Ihrer Anwendung und führen Sie eine Standardverschlüsselung (wie bcrypt) die möglicherweise (hoffentlich) auf Ihrem System verfügbar ist.

Ich würde immer noch eine Standardbibliothek abholen oder einen solchen Opensource-Code in meine Anwendung integrieren. Bitte erläutern Sie, was Sie davon abhält.


Old: aus irgendeinem Grund dachte ich, ein PHP-Code erforderlich war ... mein Fehler.
Dieser Artikel gibt a PHP encryption symmetric program example using crypt zum Speichern von Kennwort in einer Textdatei.

Möglicherweise verwandte Fragen Stackoverflow

+0

Er benutzt C++. Ich glaube nicht, dass ein PHP-Skript relevant ist. –

3

Ich denke, Sie könnten dies in die falsche Richtung gehen.Wenn Sicherheit, echte Sicherheit, das Ziel ist, dann werden Sie das Passwort nicht einmal in seiner verschlüsselten Form speichern wollen (weil es entschlüsselt werden kann, wenn der Schlüssel gestohlen wird, wie andere Leute gesagt haben).

Was Sie tun sollten, ist ein Hash des Passworts (mit einem entsprechenden Salz) zu speichern. Dies bedeutet, dass niemand (nicht einmal die Website-Administratoren) das Passwort eines Benutzers bestimmen kann. Sie können einfach ein Passwort akzeptieren und sehen, ob es das Richtige ist oder nicht, indem Sie die Eingabe mit dem gleichen Salz hashen (Sie können einen Hash nicht umkehren).

Auch diese Art von Situation eignet sich gut für Datenbanken, verwenden Sie eine?

Google Passwort Hashing mit Salzen und Sie können darüber von echten Sicherheitsexperten lesen (ich bin keiner).

Verwandte Themen