2

ここで見つけたコードを使用して、DES を使用して暗号化しています。この値をサードパーティ サービスに送信していますが、機能していないようです。

与えられたコード、ソルト、および反復をパラメーターとして使用して、パラメーター仕様で暗号を初期化します。

// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec( salt, iterationCount );

// Create the ciphers
ecipher.init(Cipher.ENCRYPT_MODE, key , paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key , paramSpec);

反復回数を変更すると、結果が異なります。

ワイヤーの反対側で何が使用されているかを知るにはどうすればよいですか? このサードパーティのサービスから私が知っている唯一のことは、使用するアルゴリズムは DES であり、もちろん秘密のパスワードであるということです。

私は何が欠けていますか?

4

2 に答える 2

2

「DES」自体は1回の反復です。後継の「トリプルDES」各データブロックを3回暗号化しますアルゴリズムを3回繰り返します。「DES」だけを使用して暗号化を実行することが予想される場合は、1回の反復が正しいはずです。

一般に、おもちゃの実装以外の目的で独自の暗号化関数を作成することは悪い習慣と見なされます。暗号化のための安全で正しいライブラリを作成するのは難しい場合があります。Java PlatformSE6の一部であるJava暗号化アーキテクチャの使用を検討してください。

于 2010-12-03T21:50:14.010 に答える
1

問題は、暗号化アルゴリズム(DES)は知っているが、鍵生成アルゴリズムは知らないということです。パスワードからキーを取得するには、多くの可能性があります。例のPBEParameterSpecは、パスワードからキーを取得するためにPKCS#5アルゴリズムを使用しています。これはその目的には非常に優れたアルゴリズムですが、多くの場合、パスワードをハッシュするだけの場合や、さらに悪い方法など、簡単なアルゴリズムを自分で開発しようとします。使用されている方法を検出するのは簡単ではありません。そのサードパーティのサービスを使用している動作中のアプリがある場合は、それがどのように機能するかを確認するためにリバースエンジニアリングを試みることができます。

于 2010-12-04T18:01:57.137 に答える