有没有人在啊,想请讲解下,C++实现RC4算法的一些问题?
我用C++做RC4算法,碰到个难题就是密钥须从外界输入,长度不确定,无法定义好一个数组接受,后面又必须用到这个数组的长度去做取余运算,谁有好方法解决?S[i]=i;
T[i]=k[i%strlen(k)];
就是这个k的长度无法解决。。
能直接有代码解决这个题目的就更加感谢了。
题目是用C++做一个RC4的算法,密钥和明文均为字符串。。
谢谢1、2楼的两位。不过我还是有些问题。
RC4算法我看书的理解是你随机输入一个1-256之间的字符串(可包含数字和字母)作为密钥,用K接受后赋值给一个固定为256位的数组T[i],若K长度不够则将k反复输入T[i]中,直到T[i]凑满256位。这个过程中就要用到一个循环
for i = 0 to 255 do
S[i] = i;
T[i] = K[i mod keylen];
接下来要用T[i]给S[i]做置换。S[i]也是256位的。置换如下
j = 0;
for i = 0 to 255 do
j = (j + S[i] + T[i]) mod 256;
Swap (S[i], S[j]);
这个用C++实现时,就有那个数组长度的问题,K要定义成数组还是字符串?那个keylen怎么取得?下面T[i]中的的数据是字符型的,j = (j + S[i] + T[i]) mod 256 要怎么实现?j是int型的,S[i]也是个int型数组??C++不熟,我们只学了一个学期,现在学的是JAVA,C++忘记得差不多了。。