2016-04-18 2 views
1

Я пытаюсь зашифровать запросы тела POST, выходящие из моего веб-приложения, на мою службу.Как изменить длину содержимого servletRequest в фильтре

И шифрование выполняется в фильтре.

У меня возникли проблемы с длиной содержимого, длина содержимого задана для пост-звонка в JavaScript, а в фильтре по мере того, как шифрование выполняется, длина содержимого изменяется (длина увеличивается) и когда данные отправляются на служба данных усекается до длины данных, которые она первоначально (до шифрования), что делает данные непригодными для использования.

Код шифрования:

public void jsonEncrypt(String passPhrase, int iterationCount, int keySize, String salt, String initializationVector) throws IOException { 
    String json = new String(body, StandardCharsets.UTF_8); 
    AesUtil aesUtil = new AesUtil(keySize, iterationCount); 

    encryptJsonText = aesUtil.encrypt(salt, initializationVector, passPhrase, json); 
    byte[] b = encryptJsonText.getBytes(); 
    body = b; 
} 
+0

Вы можете указать код, используемый для шифрования и отправки данных? Если вам нужно шифрование, почему вы не полагаетесь на «HTTPS»? – FredMaggiowski

+0

Ниже приведен метод, который я использую для шифрования JSON . У меня есть требование, чтобы запрос не был в читаемом формате, чтобы данные запроса не обрабатывались. 'общественного недействительный jsonEncrypt (String Passphrase, Int iterationCount, Int KeySize, строка соль, строка initializationVector) бросает IOException { \t Строка JSON = новый String (тело, StandardCharsets.UTF_8); \t AesUtil aesUtil = новый AesUtil (keySize, iterationCount); \t encryptJsonText = aesUtil.encrypt (соль, initializationVector, passPhrase, json); byte [] b = encryptJsonText.getBytes(); \t body = b; } ' – ramdas

+0

Я отредактировал ваш вопрос, добавив код, в следующий раз помните, что вы должны редактировать вопрос, а не размещать код в комментарии. Кстати, это шифрование на стороне сервера, не так ли? – FredMaggiowski

ответ

1

Я могу решить проблему, я переопределить метод getContentLength() вернуть новый length.By это я могу зашифровать тело запроса и отправить его в моей службе, где я расшифруйте тело и используйте его.

Смежные вопросы