2

MySQLデータベースに保存されているすべてのデータを128ビット暗号化で暗号化する必要があるクライアントがいます。

すべてのデータがDBに挿入される前に、PHP関数が実行されて暗号化されると仮定します。次に、データベースからデータをプルするときに、復号化関数を実行して元のテキスト/情報を吐き出します。

誰かが私を正しい方向に向けることができますか?関数が共有/共通キーを使用して暗号化と復号化を行うことを理解していますが、128ビットにする理由は何ですか?これを行うPHPのビルド済み関数はありますか?

提案に感謝します。

スコット

4

3 に答える 3

1

ここにあなたの解決策があることを願っています。2つの関数encryptdecryptページを参照して、アイデアをつかんでください。

于 2013-01-08T04:05:54.433 に答える
1

はい。暗号化に使用しているクラス/APIについて学習する必要があります。また、使用しているアルゴリズムのタイプがアルゴリズムに依存しています。詳細については、このリンクをたどってくださいここに暗号化についての簡単な説明があります。ここにコードのサンプルがありますが、mycryptの方がお勧めです

于 2013-01-08T04:11:30.087 に答える
1

通常、「128ビット暗号化」とは、128ビットキーを使用した 対称暗号化を指します。AES -128は、暗号化アルゴリズムに最適です。

また、操作モードを選択する必要があります。プライバシーのみが必要な場合は、CBC、CFB、OFB、CTRがすべて適切な選択ですが、データを改ざんから保護する場合は、EAXなどの認証済み暗号化モードを使用する必要があります。 。すべてのレコードが単一のAESブロック(128ビット)よりも短い場合を除いて、ECBモードを使用しないでください。できれば、そうでない場合もあります。

選択したモードによっては、通常、レコードごとに初期化ベクトル(IV)を生成する必要があります。これは、一意で予測不可能なランダム暗号ブロック(AESの場合は128ビット)である必要があります。1つを生成する方法はたくさんありますが、2つの優れた方法(NISTが推奨)は、暗号的に安全な疑似乱数ジェネレーターの出力を使用するか、ECBモードで一意のIDを暗号化することです(これは、問題がないまれなケースの1つです)。使用する)。使用している暗号ライブラリによっては、これを処理してくれる場合があります。レコード内の暗号化されたデータを変更する場合は、常にIVも変更する必要があることに注意してください。

他の回答が指摘しているように、PHPを使用している場合は、暗号ライブラリにmcryptが適しています。

于 2013-01-08T06:50:22.603 に答える