2013-12-10 125 views
1

在我的Web應用程序中,我們使用PBEWithMD5AndDES加密查詢參數,然後使用sun.misc.BASE64Encoder().encode()對其進行編碼。它使整個URL的長度超過140個字符。有沒有辦法改變加密&編碼,我可以將長度減少到80個字符左右?如果我必須更改加密算法和編碼以減少長度,那麼我應該如何保持安全?減少查詢字符串長度

+0

我想如果你讓我們知道你正在使用哪種加密算法,我會更好地幫助你。 –

+0

您可以在base64編碼之後計算輸出長度,如新長度幾乎等於舊長度* 1.33。爲了減少輸出長度,你應該嘗試使用字母更大的算法(比如base85)。 – mkrakhin

回答

2

Base64編碼有其已知的開銷,加密也有開銷 - 切換到不同的編碼算法可能會減少開銷,所以可能加密算法 - 但我看到這裏沒有把握 - 你可能會減少它是139字符表示當前數據集,但任何其他數據要求可能會再次重複該問題。

我看到兩個選項:

  1. 壓縮數據在加密之前 -
    優點:相對容易開發。
    缺點:可能會影響性能,可能無法充分減小尺寸。
  2. 使用POST並在響應正文中傳遞參數,而不是作爲查詢參數。
    優點:加密數據沒有登錄服務器日誌(安全性),尺寸爲「無限」 缺點:可能需要顯著更多的開發時間,可能無法在您的環境完全(外部需求,技術問題等)

我會去選擇#2給予機會。

+0

謝謝。方案2不是我現在可以做的事情。如果我能夠快速完成,我會嘗試第一個。我如何壓縮查詢參數? – yogsma

+0

看看這個回答:http://stackoverflow.com/a/5934620/357360 另外 - 這裏是另一個更多的字符串相關的例子:http://www.coderanch.com/t/374637/java/java /壓縮 - 解壓縮 - 字符串-Javascript – RonK

+0

謝謝,我嘗試了這些東西,但有時它減少了長度,有時增加了長度。非常波動。 – yogsma

1

只有您可以減少查詢參數的名稱長度。 如果你想嘗試任何類型的編碼,它會增加查詢的長度。

所以我會建議使用表單提交,而不是基於查詢的提交。 或者請發佈您的完整方案,這將顯示您想要提交數據的條件。