- 论坛徽章:
- 39
|
回复 41# OwnWaterloo
看了你们聊这么久,很多东西很模糊。这段代码如果给我来改成可以复用的话,我会改成下面的代码,至于什么库不库的不知道- #include <stdio.h>
- #include <string.h>
- //int main(int argc, char* argv[])
- int* rc4(const int* iBuf, int ilen, const unsigned char* key)
- {
- //FILE* ifile = fopen(argv[1], "rb");
- //FILE* ofile = fopen(argv[2], "wb");
- //unsigned char* key = (unsigned char*)argv[3];
- //size_t len = strlen(argv[3]);
- size_t len = strlen(key);
- unsigned char S[256];
- int i,j,c;
- for (i=0; i<256; ++i) S[i] = i;
- for (i=0, j=0; i<256; ++i)
- {
- unsigned k;
- j = (j+key[i%len]+S[i]) % 256;
- k = S[i]; S[i] = S[j]; S[j] = k;
- }
- i = j = 0;
- //for (; c=getc(ifile), c!=EOF; )
- int n;
- int* oBuf;
- malloc(oBuf, ilen*sizeof(int));
- for (n=0; n<iLen; ++n)
- {
- unsigned k, byte;
- c = iBuf[n];
- i = (i+1) % 256;
- j = (j+S[i]) % 256;
- k = S[i]; S[i] = S[j]; S[j] = k;
- byte = S[ (S[i]+S[j]) % 256 ];
- //putc(c ^ byte, ofile);
- oBuf[n] = c ^ byte;
- }
- //fclose(ofile);
- //fclose(ifile);
- //return 0;
- return oBuf;
- }
复制代码 至于好不好,对不对也不是很清楚,让大家笑话吧 |
|