4

同じシード値でキーを生成するたびに同じ AES キーを取得できるように、シード値で AES キーを生成するにはどうすればよいですか?

Blackberry Pearl 8100 デバイス用にこのキーを生成したいと考えています。

AESKey(keyData) で AES キーを生成できません。

また、 String または byte[] のいずれかの形式で出力するたびに、それを生成できません (出力) 実際のキーは出力されません。

キーを取得するにはどうすればよいですか?

アップデート

次のように、データの byte[] を渡して AESKey を生成しようとしました。

 AESKey key = new AESKey(keyData);

毎回同じキーを取得しますが、これは正しいです。

現在、このキーを使用してデータを暗号化しています。暗号化するたびに、暗号化の値が異なります。これが私の問題です。サーバーに送信できるように、暗号化後に毎回同じデータを取得するにはどうすればよいですか?

アップデート

AESKey(keyData) で AES キーを生成できません。

また、 String または byte[] のいずれかの形式で出力するたびに、それを生成できません (出力) 実際のキーは出力されません。

キーを取得するにはどうすればよいですか?

4

3 に答える 3

8

RFC 2898のセクション 5.2 では、これを行う 1 つの方法について説明しています。

具体的には、「seed」値は「PASSPHRASE」と「SALT」で構成されます。ただし、同じパスフレーズとソルトを指定すると、常に同じキーになります。

http://anandam.name/pbkdf2/は JavaScript の実装です。

http://en.wikipedia.org/wiki/PBKDF2には、詳細情報と他の実装へのリンクがあります。

于 2009-05-14T06:46:41.370 に答える
0

もう少し情報が必要なので、これは推測です。

AESKey をどのように使用していますか? CBC 暗号化 (つまり、net.rim.device.api.crypto.CBCEncryptorEngine を使用) を使用している場合、初期化ベクトルも呼び出しごとに同じにする必要があります。InitializationVector と BlockEncryptorEngine を受け取る CBCEncryptorEngine のコンストラクターを使用します。

ウィキペディアの記事で、その理由について詳しく説明しています。

于 2009-05-14T16:03:35.120 に答える