DES 暗号化は「一方向暗号化」または「双方向暗号化」と呼ばれますか? DES 暗号化を復号化する PHP クラスまたはメソッドはありますか? ありがとう
6 に答える
php crypt関数は一方向のハッシュ関数です。復号化できるようにしたい場合は、さまざまなアルゴリズムをサポートするmcrypt拡張機能を参照してください。
DESアルゴリズムをめぐる疑問がある (そして常に疑問がある) ことに注意する必要があります。これは長い間広く使用されてきましたが、当初は 56 ビット キーのみで指定されていたため、現時点で重要な用途に対して十分に安全であるかどうかは疑問です. 一般的にはトリプル DES の方が優れていますが、既知の理論上の攻撃がいくつかあります。暗号を選択できる場合は、代わりにAESを検討することをお勧めします。
DES は逆にすることができるので、これは双方向の暗号化です (意図した場合)。
DES はよく知られている暗号化標準であるため、PHP でも使用できるはずです。
一方向暗号化はハッシュの安全な形式です: 平文は、(理論的には) 力ずくの努力なしでは元の平文を取得できないような方法で、多くの場合固定長のランダムなデータ シーケンスに変更されます。
双方向暗号化、または可逆暗号化は、暗号化という用語が通常意味するものです。平文は明らかにランダムなデータに変換されますが、元の平文を取得できるようにする「キー」に依存する方法で変換されます。
DES は、56 ビット キー (14 の 16 進文字) に依存しているため、今日の標準では比較的弱い可逆暗号化の形式です。これは、基本的に同じアルゴリズムでより長い鍵を持つ 3DES (トリプル DES) に取って代わられました。
アプリケーションについては言及しませんが、データを比較するだけで取得する必要がない場合は、ハッシュの方が安全であると見なされます。たとえば、ハッシュされたパスワードを保存できます。次に、ユーザーが認証されると、入力されたテキストに対して同じハッシュを実行し、保存されているハッシュ値と比較します。一致する場合、正しいパスワードが入力されています。
ハッシュ化の大きな利点は、復号化キーを保存する必要がないことです。
おそらく一方向関数を意味していると思います[1]。暗号化では、対称暗号化と非対称暗号化を区別します。対称暗号化では、暗号化と復号化に同じキーを使用します (DES は対称です)。非対称暗号化はキー交換に使用され、公開キーはメッセージの暗号化に使用され、秘密キーはメッセージの復号化に使用されます。非対称暗号化の例は AES [2] です。非対称暗号は一方向関数を使用します。
[1] http://en.wikipedia.org/wiki/One-way_function [2] http://en.wikipedia.org/wiki/AES
「一方向暗号化」または「双方向暗号化」という用語に慣れていません。「ワンタイム パスワード」という用語があり (DES にはまったく関係ありません)、「対称」暗号化アルゴリズムと「非対称」暗号化アルゴリズムがあります。これは、暗号化と復号化 (対称) に同じキーを使用するか、2 つの異なるキーのセットを使用するかを意味します。 1 つは暗号化用、もう 1 つは復号化用 (非対称) に使用されます。DES は対称アルゴリズムです。PHPに関しては、crypt()が仕事をしているので: