text: 在密碼學中，RC4在1987年設計的。由於RC4演算法存在弱點，2015年2月所釋出的 RFC 7465 規定禁止在TLS中使用RC4加密演算法。RC4由偽隨機數生成器和異或運算組成。RC4的金鑰長度可變，範圍是[1,255]。RC4一個位元組一個位元組地加解密。給定一個金鑰，偽隨機數生成器接受金鑰併產生一個S盒。S盒用來加密資料，而且在加密過程中S盒會變化。由於異或運算的對合性，RC4加密解密使用同一套演算法。歷史.RC4是由RSA Security的羅納德·李維斯特在1987年開發出來的，雖然它的官方名是“Rivest Cipher 4”，但是首字母縮寫RC也可以理解為"Ron's Code"。RC4開始時是商業機密，沒有公開發表出來，但是在1994年9月份的時候，它被人匿名公開在了Cypherpunks 郵件列表上，很快它就被髮到了sci.crypt 新聞組上，隨後從這傳播到了網際網路的許多站點。隨之貼出的程式碼後來被證明是真實的，因為它的輸出跟取得了RC4版權的私有軟體的輸出是完全相同的。由於演算法已經公開，RC4也就不再是商業秘密了，只是它的名字“RC4”仍然是一個註冊商標。RC4經常被稱作是“ARCFOUR”或者"ARC4"，這樣來避免商標使用的問題。RSA Security從來沒有正式公佈這個演算法，羅納德·李維斯特在2008年的自己的課程筆記中給出了一個指向RC4的英文維基百科文章的連結，並且在2014年的檔案中確認了RC4及其程式碼的歷史。RC4已經成為一些協議和標準的一部分，如1997年的WEP和2003年的WPA；和1995年的SSL，以及1999年的TLS。2015年由 RFC 7465 禁止RC4在所有版本的TLS中使用。虛擬碼.初始化長度為256的S盒。第一個for迴圈將0到255的互不重複的元素裝入S盒。第二個for迴圈根據金鑰打亂S盒。for i from 0 to 255S[i] := iendforj := 0for( i=0 ; i&lt;256 ; i++)j := (j + S[i] + key[i mod keylength]) % 256swap values of S[i] and S[j]endfor下面i,j是兩個指標。每收到一個位元組，就進行while迴圈。透過一定的演算法。如果輸入的是明文，輸出的就是密文；如果輸入的是密文，輸出的就是明文。i := 0j := 0while GeneratingOutput:i := (i + 1) mod 256 //aj := (j + S[i]) mod 256 //bswap values of S[i] and S[j] //ck := inputByte ^ S[(S[i] + S[j]) % 256]output Kendwhile此演算法保證每256次迴圈中S盒的每個元素至少被交換過一次。破解.2015年，比利時魯汶大學的研究人員Mathy Vanhoef及Frank Piessens，公佈了針對RC4加密演演算法的新型攻擊程式，可在75小時內取得cookie的內容。
metadata: erhwenkuo/wikipedia-zhtw
metadata: RC4
metadata: https://zh.wikipedia.org/wiki?curid=3165607