2015-05-28 171 views
1

我想加密和解密一些長度在300到1000個字符之間的字符串。我將把這些加密的值保存在cookie中。所以我想知道是否有可用於生成較小加密字符串的加密API可能與實際字符串相同或更短。在Java中生成較小字符串的加密技術

謝謝。

+1

爲什麼不簡單地組合一個加密和壓縮算法(我首先推薦壓縮)? – Paul

+0

可以肯定的是,你在談論加密,所以你想從密文中恢復明文,對吧? –

+0

是的。我想將這個加密的信息保存在cookie中,以後再檢索它以備後用。 – Aryan

回答

1

例如,您可以首先將字符串壓縮爲@Paul建議,然後使用base64對其進行編碼,如果要將其保存爲漂亮的字符串而不是字節數組並加密後。可能會滿足你的需求。

1

對稱加密是一種通常的設施,讓您可以加密透明(明文)消息,其等效加密(密文)和解密回用密鑰,稱爲私鑰。誰擁有密鑰就能夠來回執行此操作(因此這個詞是對稱的)。正如您所知,這與編碼/解碼與沒有涉及私鑰的編碼/解碼非常不同,因爲知道編碼算法足以解碼(如Base 64)。

你似乎有使密文應該明文的附加要求。一些壓縮技術可以被利用,但這在你的用例中是棘手的,也許是不需要的。在一般情況下,如果你使用SymmetricEncryption實用像this(真正的代碼,嘗試與Java 8),你會看到密文超過密文(不是你想要的)。

最後,這種解決方案對於您的用例可能會很複雜。如果我理解正確,你想用一些信息來識別HTTP會話。如果您將該信息存儲在Cookie中,那麼您需要保護該信息,以便您的解決方案至少與Cookie本身一樣安全。但在這種情況下,您使用服務器端存儲進行會話,而不是使用cookie存儲。看看如何完成using Rails。 Java中應該有類似的東西。這樣,你在cookie中存儲的是對保密數據的「引用」,機密數據存儲在服務器端(據說至少與整個服務器一樣安全)。