SealedObjectsを使用してRMI接続を介してデータを送信しようとしています
ターゲットはSealedObjectであり、暗号は事前に初期化されています(私が知る限り、適切に)が、次のコードを実行すると、メッセージとともにIOExceptionが発生します
invalid stream header: 52FAA4D1
ここで、54FAA4D1は毎回異なる8文字の16進文字列です。
問題のコードは
target.getObject(cipher);
ターゲットも暗号もnullではないので、問題は暗号の設定方法にあると思います。キーはクライアントとサーバーの両方でまったく同じ方法で作成されるため、私は停止しています。
暗号はを使用して作成されます
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
//Do this to get the same parameters as were used on the client side
cipher.init(Cipher.ENCRYPT_MODE, this.key);
AlgorithmParameters parameters = cipher.getParameters();
//Set to decrypt mode using the same parameters
byte[] iv = parameters.getParameterSpec(IvParameterSpec.class).getIV();
cipher.init(Cipher.DECRYPT_MODE, this.key, new IvParameterSpec(iv));
真ん中のセクションを使用する場合と使用しない場合の両方を試しましたが、どちらも機能しないようです。
2回目にcipher.init()の最後のパラメーターを削除すると、InvalidKeyExceptionが発生し、中央のセクションを完全に削除して、cipher.getParameters.getParameterSpec(IVParameterSpec.class).getIV();を使用します。NullPointerExceptionが発生します
そうそう、完全に立ち往生しています-問題が何であるかを理解することでさえ感謝されるどんな助けもありがたいです。