2、{ j=(j+s+k)%256; swap(s,s[j]); } i=j=0;得到的子密碼sub_k用以和明文進(jìn)行xor運(yùn)算,得到密文,解密過(guò)程也完全相同。根據(jù)目前的分析結(jié)果,沒(méi)有任何的分析對(duì)于密鑰長(zhǎng)度達(dá)到128位的RC4有效,所以,RC4是目前最安全的加密算法之一,大家可以放心使用! while(明文未結(jié)束) { ++i%=n; j=(j+s)%n; swap(s,s[j]);標(biāo)準(zhǔn)文檔實(shí)用文案 sub_k=s((s+s[j])%n); } 位長(zhǎng)可以自己隨意設(shè)置,將256設(shè)置為你希望的即可我的C語(yǔ)言源碼:平臺(tái):wi
3、ndowsXP,VC++6.0有什么大家可以討論的地方請(qǐng)留言或發(fā)郵件至我郵箱:#include#include#includevoidswap(unsignedchar*s1,unsignedchar*s2){chartemp;temp=*s1;*s1=*s2;*s2=temp;}voidre_S(unsignedchar*S){unsignedinti;for(i=0;i<256;i++)??S[i]=i;}voidre_T(unsignedchar*T,char*key){inti
4、;intkeylen;keylen=strlen(key);for(i=0;i<256;i++)??T[i]=key[i%keylen];}voidre_Sbox(unsignedchar*S,unsignedchar*T){inti;intj=0;for(i=0;i<256;i++){??j=(j+S[i]+T[i])%256;標(biāo)準(zhǔn)文檔實(shí)用文案??swap(&S[i],&S[j]);}}voidre_RC4(unsignedchar*S,char*key){charT[255]={0};re_S(S);re_T(T,key);re_Sbox
5、(S,T);}voidRC4(FILE*readfile,FILE*writefile,char*key){unsignedcharS[255]={0};unsignedcharreadbuf[1];inti,j,t;re_RC4(S,key);i=j=0;while(fread(readbuf,1,1,readfile)){??i=(i+1)%256;??j=(j+S[i])%256;??swap(&S[i],&S[j]);??t=(S[i]+(S[j]%256))%256;??readbuf[0]=readbuf[0]^S[t];??fw
6、rite(readbuf,1,1,writefile);??memset(readbuf,0,1);}printf("加密
7、解密成功!!!");}intmain(intargc,char*argv[]){char*Filename1,*Filename2;char*key;FILE*file1,*file2;Filename1=argv[1];Filename2=argv[2];key=argv[3];if(argc==4){??printf("**********************正在加密中*******************
8、n");}else{??printf("輸入格式:");標(biāo)準(zhǔn)文檔實(shí)用文案??printf("文件名
9、加密或解密文件名
10、存放文件名
11、密鑰");??return-1;}if((file1=fopen(Filename1,"rb"))==NULL
12、
13、(file2=fopen(Filename2,"wb"))==NULL){????printf("Can'topenfile");??return-1;}???RC4(file1,file2,key);fclose(file1);fclose(file2);return0;}加密解密算法RC
14、5--#include#include"math.h"#includestaticconstw=32;staticcons