1、现在网上有的大部分都是理论,这里将给出一个简单加密模块的全部源程序(源代码) 至于RSA的理论网上一大把,它是基于公钥加密体制的一种算法。这个实例主要是用来将某一重要文件绑定到一个IP地址上。把它拷贝下来,存为CODE.C,然后执行 GCC –O CODE CODE.C 然后用./ CODE E [IP ADDRESS] [FILENAME]对文件进行加密。或用 ./CODE D [IP ADDRESS] 进行解密整个过程中产生了两个中间文件,至于什么文件,你去试一试就知道啦! #include "stdio.h" #include "strin
2、g.h" int e,d=1,n; main(int argc,char *argv[]) { int ip,fai,p=43,q=59,ch1,i=0,j=0,edch,dech=0; char *num,*cha,ch,*file={"index.html"}; FILE *fp,*fp2; if (argc<2) { printf("paramater error!"); exit(0); } if (argc>3) { file=argv[3]; } //pr
3、intf("%s,",file) e=iptoint(argv[2]); //printf("%s,%s",argv[1],argv[2]); switch (*argv[1]) { case 'e': //printf("e=%d",e); if ((fp2=fopen("encode.htm","w+"))==NULL) { printf("can't open file"); exit(0); } "code.c" 199L, 3571C } n=p*q;fai=(p-1)*(
4、q-1); if((fp=fopen(file,"r"))==NULL) { printf("can't open giving file"); exit(0); } else { while((ch1=fgetc(fp))!=EOF) { edch=fmod(ch1,e,n); if (edch>0 && edch<10) { fprintf(fp2,"%s","000"); fprintf(fp2,"%d",edch); } else if (edch<100 && edch>1
5、0) { fprintf(fp2,"%s","00"); fprintf(fp2,"%d",edch); } else if (edch<1000 && edch>100) { fprintf(fp2,"%s","0"); fprintf(fp2,"%d",edch); } else if (edch<10000 && edch>1000) { fprintf(fp2,"%d",edch); } else fputc('\n',fp2); } } close(fp); close(f
6、p2); break; case 'd': // printf("d=%d",e); if ((fp2=fopen("decode.html","w+"))==NULL) { if ((fp2=fopen("decode.html","w+"))==NULL) { printf("can't open file"); exit(0); } n=p*q;fai=(p-1)*(q-1); while(((d*e)%fai)!=1) d++; if((fp=fopen("encode.ht
7、m","r"))==NULL) { printf("can't open file"); exit(0); } else { i=0; // printf("e=%d,d=%d,n=%d,",e,d,n); while((ch=fgetc(fp))!=EOF) { if (i==4) { //dech=((int)num[0])*1000+((int)num[1])*100+((int)num[2])*10+(int)num[3]; //printf("yuan=%d,",dech);
8、 dech=fmod(dech,d,n); //printf("new=%d,",dech); fprintf(fp2,"%c",dech); i=0; dech=0; // } switch (ch) { case '9':dech=dech*10+9;break; case '1':dech=dech*10+1;break; case '2':dech=dech*10+2;break; case '3':dech=dech*10+3;break; case '4':dech=dech*
9、10+4;break; case '3':dech=dech*10+3;break; case '4':dech=dech*10+4;break; case '5':dech=dech*10+5;break; case '6':dech=dech*10+6;break; case '7':dech=dech*10+7;break; case '8':dech=dech*10+8;break; default:dech=dech*10; } // printf("dech=%d,",dech); num[i]=ch;
10、 i++; } dech=fmod(dech,d,n); fprintf(fp2,"%c",dech); } close(fp); close(fp2); break; default: printf("Usage:code [option]...[Ip Address]...\n"); printf("List information about the option\n"); printf("e bind ip address to index.html\n"); printf("d d
11、ecode from the encodeing file to index2.html");
}
}
int iptoint(ip)
char *ip;
{
int i,ei=0,len;
int prime=0;
len=strlen(ip);
len=strlen(ip);
for(i=0;i
12、10)%10+ei%10;
//printf("%d",ei);
//len=ei/2;
//while(prime==0)
//indent: Standard input:2: Error:Unexpected end of file
while (((ei % 2)== 0) || ((ei % 3) == 0))
{ ei=ei+1;
}
/* prime=1;
for (i=0;i






