Key-Size

RC4 中的任意密鑰大小

  • May 29, 2018

是否有可能使用 RC4,例如 17 位長的明文我可以獲得 17 位長的密文?

據我了解,對於這個範例,我需要一個 17 位長的密鑰來執行 XOR 操作以進行加密。然而,在 RC4 的正常算法中,只允許 1 到 256字節的密鑰長度。

我可以使用 3 字節 = 24 位作為密鑰長度並在生成用於加密的隨機字節 K 時丟棄 7 位嗎?

還是我缺少另一種解決方法?

這是關於一個誤解。RC4 是流密碼。這意味著它需要一個**(輸入)密鑰並生成一個密鑰流**。然後這個密鑰流的位與明文進行異或。密鑰流的大小不依賴於(輸入)密鑰的大小。輸入密鑰與明文異或。


通常 RC4 實現只處理字節。沒關係,您可以在 40–2048 位之間以 8 位為步長提供您想要的任何輸入鍵。

然後您可以使用生成的密鑰流進行加密,這意味著與密鑰流進行異或。您可以只使用 3 個字節/24 位的明文:例如一個字節設置了最低有效位(其他位可以具有任何值),然後是兩個字節,其餘 16 位。然後你加密這些字節。

最後你取回相同位置的 17 位。現在你已經加密了 17 位;其他 7 位可以忽略或刪除。當對每個字節的位進行異或運算時,彼此完全獨立,因此不需要其他位。

解密是相同的,因此您可以再次忽略相同的 7 位。


正如其他人所指出的,RC4 不被認為是安全的。有很多安全的流密碼可供選擇。您也可以在計數器模式下使用 AES,儘管 AES-CTR 顯然確實有特定的輸入密鑰大小;但是,密鑰流將按預期工作。

引用自:https://crypto.stackexchange.com/questions/59633