2016-04-18 48 views
1

我想加密從我的web應用程序發送到我的服務的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的方法 我有一個要求,即請求不應該是可讀格式,以便不處理請求數據。 'public void jsonEncrypt(String passPhrase,int iterationCount,int keySize,String salt,String initializationVector)throws IOException { \t String json = new String(body,StandardCharsets.UTF_8); \t AesUtil aesUtil = new AesUtil(keySize,iterationCount); \t encryptJsonText = aesUtil.encrypt(salt,initializationVector,passPhrase,json); byte [] b = encryptJsonText.getBytes(); \t body = b; }' – ramdas

+0

我編輯了你的問題添加代碼,下次記住你應該編輯問題,而不是在評論中發佈代碼。順便說一下,這是服務器端加密,對吧? – FredMaggiowski

回答

1

我能解決這個問題我重寫getContentLength()方法來回報新length.By這個我能夠加密請求主體,並將其發送給我的服務,我解密身體並使用它。

相關問題