C++实现RC4算法的一些问题

有没有人在啊,想请讲解下,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++忘记得差不多了。。
最新回答
孤凫

2024-11-07 01:25:15

k[i%strlen(k)]; 这里就是使用 密钥重复填充,你可以随便假设 k[256] 好了,用户输入的密钥就保存到这个k里,

那个i 不会大于256, strlen (k) 也是小于256的
http://hi.baidu.com/widebright/blog/item/7c4889d42ee9ac04a08bb752.html

这里有算法说明,自己看好了
元亦夏

2024-11-07 01:51:26

不太明白你的问题。把数组定的大一点,可以逐个接收字符,自己加'\0',也可以直接接受字符串,用strlen就能找到实际的长度。