2009-06-27 20 views
4

C/C++ベースのcgi Webアプリケーションは、ユーザーがログインしている間は、サーバー上に一時的なテキストファイルを作成します。ユーザーがログオフすると、テキストファイルが削除されます。私はこのテキストファイルとファイルの内容を暗号化したい。ファイルには、ユーザー名やパスワードなどの情報が含まれます。C/C++でテキストファイルを暗号化する最良の方法は何ですか?

これを行うにはどのような方法が最適ですか?

編集:ライブラリが推奨されています。私の問題は、標準のC++ライブラリ以外は使用できないということです。

+0

も参照してください。http://stackoverflow.com/questions/674401/crypto-library-for-c –

答えて

2

現在「安全」と考えられている暗号化規格は、AES(Rijndaelとも呼ばれます)です。 Codeprojectなど多くの場所でC++の実装を見つけることができます。

AESまたは他の対称暗号化標準を使用する場合は、アプリケーション内に暗号化/復号化キーを保存する必要があります。もし誰かが鍵を発見すれば、あなたはこの鍵で暗号化したすべてのファイルを解読することができます。

アプリケーションをWindowsで実行する場合は、DPAPIを使用して暗号化された情報を保存することもできます。

+0

REingを手作業で生成することをお勧めします。 RAMダンプが可能なので、キーを非シーケンシャル形式にすることはプラスです。 – LiraNuna

+0

"AESやその他の対称暗号化標準を使用する場合は、アプリケーション内に暗号化/復号化キーを格納する必要があります。これは、アプリの実行可能ファイル内に生の鍵を保存する/保存できない/保存できない理由です。鍵はパスフレーズなどで保護する必要があります。 –

3

opensslなどのよく知られたライブラリを使用し、よく知られているexamplesに従ってください。プラットフォーム固有の解決策から離れてください。

0

改訂版
C++コードで使用できるファイルを暗号化および復号化するコードが必要です。
独自のコード(like this one)を書くのは間違いです。

しかし、標準ライブラリを使用することはできません。
標準の(そして、多分オープンソースの)ライブラリはおそらく、アプリケーションで暗号化を実装する最も正しいアプローチです。あなたがそれをしないことを選択した場合、それは

  • (あなたが作る任意のエラーにより、リスク弱)、独自の標準暗号化アルゴリズムのバージョンを実装し、2つだけのオプションであなたを残し「システム」コールを使用しますあなたのシステムから利用可能な(おそらく)利用可能な標準的な暗号化(bcryptのような)を実行してください。

私はまだ標準のライブラリを拾うか、そのようなオープンソースのコードをアプリケーションに統合することに固執します。あなたがそれを防ぐことができない理由を説明してください。


:何らかの理由で、私は私のエラー... PHPのコードが必要とされたと思いました。
この記事では、パスワードをテキストファイルに保存するためのa PHP encryption symmetric program example using cryptを提供しています。

おそらく関連StackOverflowの質問

+0

彼はC++を使用しています。私はPHPスクリプトは関連しているとは思わない。 –

3

私はあなたが間違った方法でこれを行うかもしれないと思います。セキュリティ、本当のセキュリティが目標であれば、暗号化された形式でもパスワードを保存したくないでしょう(他の人が言ったように、鍵が盗まれた場合に復号化できるためです)。

パスワードのハッシュ(適切な塩を含む)を保存する必要があります。これは、誰も(サイト管理者でなくても)ユーザーのパスワードを判断できないことを意味します。彼らは単にパスワードを受け入れ、入力が同じ塩でハッシュされているかどうかを調べることができます(ハッシュを逆転することはできません)。

また、このような状況はデータベースにうまく当てはまります。使用していますか?

Google パスワードは塩でハッシュであり、実際のセキュリティ専門家(これは私ではない)から読むことができます。

関連する問題