rc4在802.11无线协议中被使用,rc4属于stream cipher,与stream cipher相对的是block cipher。rc4是symmetric key algorithm。rc4产生key sequence,与数据做XOR操作。RC4内部有一个state table,每加密一个字节,状态表就变化。算法分为两个部分:initialization 和 operation
初始化状态表的pseudo-code如下:
1 2 3 4 5 6 7 | j = 0; for i = 0 to 255: S[i] = i; for i = 0 to 255: j = (j + S[i] + K[i]) mod 256; swap S[i] and S[j]; i=j=0 |
加密、解密一个字节操作如下:
1 2 3 4 5 | i = (i + 1) mod 256; j = (j + S[i]) mod 256; swap S[i] and S[j]; pr = S[ (S[i] + S[j]) mod 256] output = input XOR pr |
每操作一次,状态表就变化,这保证了加密同一个字节,不会每次产生一样的输出。
参考
Evaluation of the RC4 Algorithm for Data Encryption. http://www.tmrfindia.org/ijcsa/V3I24.pdf