Я пытаюсь использовать SealedObjects для отправки данных через соединение RMIIOException, неверный заголовок потока при использовании SealedObject.getObject()
цель является SealedObject, шифр инициированными заранее (правильно, насколько я м курсе), но когда я запускаю следующий код, я получаю IOException, с сообщением
invalid stream header: 52FAA4D1
Где 54FAA4D1 это другая 8 символов шестнадцатеричной строки каждый раз.
Код в вопросе
target.getObject(cipher);
Ни цель, ни шифра равны нулю - так что я полагаю, что проблема заключается в том, как мой шифр устанавливается. Ключ создается точно так же как на клиенте, так и на сервере, поэтому я замер.
Шифр создается с помощью
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));
Я попытался с и без использования средней части, и ни один не похоже на работу.
Если я удаляю последний параметр в cipher.init(), второй раз, когда я его вызываю, я получаю InvalidKeyException, и если я полностью удаляю средний раздел и просто использую cipher.getParameters.getParameterSpec (IVParameterSpec.class). getIV(); Я получаю сообщение NullPointerException
Так что да, полностью застрял - любая помощь была оценена даже при понимании того, что проблема будет оценена.
Что происходит с этой линией? 'AlgorithmParameters cipher.getParameters();' – takteek
Упс, вот что я получаю для переписывания, а не копирования + вставки. Фактически я устанавливаю переменные parameters = cipher.getParameters(); (исправлено выше), чтобы использовать одни и те же параметры для дешифрования. На самом деле, я ничего не шифрую - шифрование выполняется на стороне клиента: но я понял, что параметры такие же, как и тот же ключ? –
Я думаю, что что-то еще читает ваш шифр перед указанной частью кода target.getObject (cipher). –