一方向暗号化の要件があります。誰でもより良いアプローチを提案できますか
AES、DSA、およびダイジェスト塩暗号化アプローチ?
Dygest-salt は一方向用で、他は双方向用だと思いますが、どちらがより安全に使用できるかはわかりません。誰かがこれら2つのパフォーマンスの比較を指摘できるとよいでしょう。別のアルゴリズムを自由に提案してください (1 つの方法に固有)。
一方向暗号化の要件があります。誰でもより良いアプローチを提案できますか
AES、DSA、およびダイジェスト塩暗号化アプローチ?
Dygest-salt は一方向用で、他は双方向用だと思いますが、どちらがより安全に使用できるかはわかりません。誰かがこれら2つのパフォーマンスの比較を指摘できるとよいでしょう。別のアルゴリズムを自由に提案してください (1 つの方法に固有)。
「一方向暗号化」という用語は誤解を招きます。
AESは、対称暗号化アルゴリズム(正確にはブロック暗号) の例です。暗号化する鍵を持っている人は誰でも復号化できます。通常、ブロック暗号は単独で使用するのではなく、操作モードとともに使用します。
DSAは暗号化アルゴリズムではありません。これは署名アルゴリズム(実際には、鍵生成、署名、検証の 3 つのアルゴリズムのバンドル) であり、自分の秘密鍵でデータの一部に署名でき、誰もが対応する公開鍵で署名を確認できます。また、署名前にデータにハッシュ関数を適用する必要があります。
(暗号化)ハッシュ アルゴリズム( (暗号化)メッセージ ダイジェストとも呼ばれる) は、通常、キーのない関数であり、(多かれ少なかれ) 任意のサイズのデータを固定サイズのハッシュに減らします。同じハッシュ(通常はさらにいくつかのプロパティ)になる入力。これは一種の一方向関数です。
パスワードの保存には、暗号化は使用しませんが、ランダムなソルトを含むハッシュの形式を使用するため、異なるソルトを持つ同一のパスワードは異なる結果をもたらします。ソルト自体はハッシュと共に保存されるため、後でパスワードを確認するために使用できます。(これがDigest-Saltと呼ばれるものである可能性があります。) また、通常の高速ハッシュ関数を使用するのではなく、低速のハッシュ関数を使用する必要があります。
パスワードを安全に保存する方法については、こちらの記事をご覧ください。(リンクをクリックしたくない人は、PBKDF2 と bcrypt をチェックしてください。)
「一方向」の暗号化を探しています。パフォーマンス特性を探しています。2 つの実装と 1 つの概念を呼び出しています (Dygest-salt は概念的なものです)。
次の質問をする必要があります。
プレーン暗号化とは、既知のデータを、元の暗号化に使用されたキーを使用して解読できる同等のデータ セットに変換することです。サイズ (イン) == サイズ (アウト)
ハッシュは、テキストの大きなコーパスを、元のテキストよりも簡単に比較できる小さな文字列に縮小するという概念です。一般に、これはソース データがハッシュ データよりもはるかに大きいことを意味します。
暗号的には、ハッシュとは、テキストの大きなコーパスを小さな文字列に縮小することであり、コンテンツの変更により大幅に異なるハッシュが発生するため、同じハッシュになる 2 つのソースを生成することが困難になります。
最終的にコンテンツを気にしないため、ハッシュは完全な暗号化よりも「高速」である必要があります。実際、ハッシュモードで AES を使用できます。これにより、同じ特性が得られますが、最終製品は暗号化ではなくハッシュになります。 .
プレーンテキストを取得したくない場合は、常にハッシュ関数を使用する必要があります-ハッシュ関数は比較的高速な操作用に設計されています-無料ではありませんが、それがポイントです.