2010-06-16 62 views
15

我有一個10-15個字符的字符串,我想加密該字符串。問題是我想盡可能獲得最短的加密字符串。我也想將該字符串解密回原來的字符串。什麼加密算法最適合小字符串?

哪種加密算法最適合這種情況?

+2

是否需要加密是「硬」(在這種情況下,我的意思是非平凡的)來破解,還是隻是爲了縮短字符串? – 2010-06-16 07:03:48

+0

縮短字符串,「更難破解」只是一個獎金 – 2010-06-16 07:04:57

回答

7

AES使用16字節塊大小;如果您的10-15個字符的限制是確定的,它非常適合您的需要。 PKCS#11(IIRC)填充方案將向數據添加6-1個字節並生成恰好16個字節的輸出。你並不需要使用加密模式(如CBC),因爲你只是加密一個塊。有一個問題,你將如何處理密鑰 - 總是存在你如何處理加密密鑰的問題。

如果您必須使用較短的數據長度來縮短字符串,那麼您可能需要考慮CTR模式下的AES。這使用鍵和計數器來生成與字符串的字節異或的字節流。它會使您的加密字符串與輸入明文字符串的長度保持一致。

你將很難找到一種通用壓縮算法,可靠地減少這種短字符串的長度,因此在加密之前進行壓縮幾乎不是一種選擇。

1

如果主要目標是縮短,我會尋找一個壓縮庫,允許建立在一個普通字符串語料庫上的固定字典。
我個人並沒有這方面的經驗,但我敢打賭LZMA可以做到這一點。

相關問題