rc4算法简单介绍及实现
0. 介绍
RC4是一种流密码,但因为安全性问题已经被弃用。
1. 算法描述
1.1 初始化
Key为生成的随机密钥:1-256B
S为一数组:256B
T为辅助数组:keylen
B
for (int i = 0;i < 256;i++) {
S[i] = i;
T[i] = S[i % keylen];
}
1.2 初始化排列
通过下面的过程来,初始化排列S
int j = 0;
for (int i = 0;i < 256;i++) {
j = (j + S[i] + key[i%key_len]) % 256;
int tmp = S[i];
S[i] = S[j];
S[j] = tmp;
}
1.3 流生成
生成好排列后,就可以根据排列,重复生成key
进行加解密操作了。
int i = 0;
int j = 0;
for (int k = 0;k < str_len; k++) {
i = (i + 1) % 256;
j = (j + S[i]) % 256;
int tmp = S[i];
S[i] = S[j];
S[j] = tmp;
int t = (S[i] + S[j]) % 256;
str[k] ^= S[t];
}
3. 代码
实现见ltnotfty-gitee
参考
william stallings
manojpandey-rc4