2

これは短くシンプルにしておきます。PHPのmcryptライブラリの一部として、40ほどの可能な暗号があります。ここを参照してください

自分自身は暗号化についてあまり知らないので、使用する暗号に関係なく、復号化されたデータは暗号化されたデータと同じであるという前提で作業しています(そうでなければ、何が正しいのでしょうか?)

配列またはシリアル化された標準オブジェクトのいずれかを暗号化してから復号化する必要があります。mcryptライブラリの基本的な実装のいくつかの例をオンラインで閲覧しましたが、それぞれの例で異なる暗号が使用されていることに気付きました。これには何か意味があるのか​​、それとも単に個人的な好みなのか、疑問に思いました。

私の質問は、これらの暗号の間に重要な違いがあるかどうかです。

  • 暗号化/復号化は配列またはシリアル化された標準オブジェクトのいずれかであり、データは比較的少なくなります。
  • この操作はかなり珍しいので、速度は大きな問題ではなく、2秒未満の範囲であればどこでも許容されます。
  • 暗号化された文字列はCookieに保存され、URLクエリ文字列を介して送信される必要があります(したがって、長さと文字セットに制限があります)

ノート

ハッシュとhmacのどちらを使うべきかについての議論は終わっていません。暗号化が必要であり、この問題に対する正しいオプションです。

4

1 に答える 1

5

適切な暗号は、正しいキーが与えられた平文/暗号文の間で暗号化/復号化します。

選択する暗号には大きな違いがあります。ブロックの長さ、キーの長さ、および/または一般的なセキュリティです。たとえば、DES は 56 ビット キーしか使用しないため、使用しないでください。参照するリストの他の暗号についても同様です。暗号を使用する前に、常にそれを読んで、それがコンテキストに適した暗号であるかどうかを判断してください。

ただし、ここでリストにあるすべての暗号について詳しく説明することはできません。:-)

個人的には、128、192、256 ビットの 3 つのサイズの鍵を取るAES (Rijndael) が好きです。最もよく知られている攻撃は、ブルート フォース攻撃よりも高速ですが、それでも実行不可能です。それも高速です (実際、Intelは Westmere と Sandy Bridge に AES 用のマシン命令を含めました)。

Serpent と Twofish も優れた暗号です。数年前の AES コンテストでは、Serpent が Rijndael に次いで 2 位、Twofish が 3 位になりました (そうだったと思います)。

于 2011-03-05T13:42:07.607 に答える