Crypt と DES は古い暗号であり、使用すべきではありません
Plain old DES は時代遅れのアルゴリズムです。AES128 と実際に比較することはできません。これは、SHA256 ハッシュが MD5 ハッシュよりも大きいと不平を言っているようなものです。そうです。ただし、そのうちの 1 つだけが攻撃者の速度をしばらく低下させる可能性があります。DES は1999 年になっても脆弱であると広く考えられており、新しいアプリケーションで使用するべきではありません。使用しないでください。
DES を使用してデータを暗号化するのは、基本的に時間の無駄だからです。ROT13 (シーザーサイファー) を使用しないのはなぜですか? 「暗号化された」結果は入力と同じサイズです。残念なことに、暗号化は 3 歳児によって破られる可能性があります。
クリプトも同様のヴィンテージです。古いUNIX crypt ハッシュ アルゴリズムは... 古いものであり、新しいアプリケーションにはまったく適していません。ハッシュは最低でも SHA256 である必要があります。
Crypt は一方向ハッシュです
暗号化されたデータを復号化する方法を理解できないことについて: cryptは暗号化アルゴリズムではなく、暗号化ハッシュ関数または「一方向ハッシュ」です。一方向ハッシュは、パスワード認証用に保存されたソルト付きハッシュと比較して、チャレンジ/レスポンス認証などで使用するために、データが変更されていないことを確認するのに適しています。暗号化されたデータを復号化することはできません。
サイズを扱う
適切な暗号化機能を使用して、サイズの増加に対応してください。bf
またはaes128
、合理的に使用できる最も弱いものです。
個人的には、DB ではなくアプリで暗号化/復号化を行うことを好みます。DB で行われた場合、キーは によって明らかになりpg_stat_statements
、ログではlog_statement
または エラーなどによって明らかになります。
ほとんどのプログラミング言語には、使用できる優れた暗号化ルーチンがあります。
何を暗号化しているのか、その理由、要件、脅威とは何かなどを実際に説明していないため、これ以上のアドバイスを提供することは困難です.
パスワード?
パスワードを保存している場合は、おそらく間違っています。
可能であれば、他の人に認証を任せてください:
本当に自分で認証を行う必要がある場合は、パスワードにソルトを追加し、結果をハッシュします。ハッシュとソルトを保存します。パスワードを比較する必要がある場合は、保存したハッシュに使用したのと同じソルトでユーザーからの新しい平文をソルトし、新しいパスワード + ソルトをハッシュして、ハッシュが保存したものと同じかどうかを確認します。そうであれば、彼らは正しいパスワードを与えました。
ほとんどの場合、平文のパスワードを復元する必要はありません。代わりに安全なパスワードのリセットを実装してください。本当に必要な場合は、aes のような十分に安全なアルゴリズムを使用して暗号化し、鍵の保管と管理について慎重に検討してください。pgcrypto を使用した鍵の保管/管理については、SO に関する他の投稿を参照してください。
以下も参照してください。