私はJavaで暗号化アルゴリズムを学習し、このアルゴリズムつまずくています:
SecretKey key = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES").generateSecret(keySpec);
私はそれはMD5やDESアルゴリズムとパスワードベースの暗号化を意味知っています。私は、MD5とDESは、2つの独立したアルゴリズムの暗号化キーを知っているが、正確なアルゴリズムとしてPBEWithMD5AndDESは手段を何?
多くのリソースは、この「アルゴリズム」に関する良い説明をしているオンラインありません。
私は誰かが、これは通常のMD5または通常のDESアルゴリズムと異なっている方法についてのシンプルで簡単な説明を与えることができる期待していました。
前の回答を拡張
正確アルゴリズムとしてPBEWithMD5AndDESは手段を何?
PBEは、KeySpecパラメータを参照して、繰り返しのパスワード、ランダムな塩および番号から生成された暗号鍵を使用しています。
KeySpec pbeSpec = new PBEKeySpec(password.toCharArray(), psswdSalt, PBKDF_INTERATIONS, SYMMETRIC_KEY_LENGTH)
アイデアがある - パスワードは、彼らが推測しやすいので、短く、ランダムではなく、十分になる傾向があります。反復回数を使用すると、やや困難推測を行う必要があります。
PBEWithMD5AndDes
参照、キーを生成するために、MD5とDESを使用しているサンプルコードを。現実の実装では、繰り返しの非常に高い数値を使用する必要があります
どのようにそれはちょうどMD5または単にDESを使用して異なるのでしょうか?それは私が知っていただきたいと思いますものです。
理論的には - あなたは純粋なMD5またはDESを使用することが、今日のコンピュータは、非常に高速なパスワードを推測できました。
DESとMD5が今日廃止されますのでご注意ください。MD5の衝突は、コモディティハードウェア上の分の下に見つけることができ、DESは安全な今日考慮されることがかなり短く、64ビットキーを使用しています。