ILD

rc4 c implementation
作者:Yuan Jianpeng 邮箱:yuanjp@hust.edu.cn
发布时间:2018-6-26 站点:Inside Linux Development

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


Copyright © insidelinuxdev.net 2017. Some Rights Reserved.