收藏 分销(赏)

现在网上有的大部分都是理论.doc

上传人:仙人****88 文档编号:6136487 上传时间:2024-11-28 格式:DOC 页数:9 大小:25KB 下载积分:10 金币
下载 相关 举报
现在网上有的大部分都是理论.doc_第1页
第1页 / 共9页
现在网上有的大部分都是理论.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
现在网上有的大部分都是理论,这里将给出一个简单加密模块的全部源程序(源代码) 至于RSA的理论网上一大把,它是基于公钥加密体制的一种算法。这个实例主要是用来将某一重要文件绑定到一个IP地址上。把它拷贝下来,存为CODE.C,然后执行 GCC –O CODE CODE.C 然后用./ CODE E [IP ADDRESS] [FILENAME]对文件进行加密。或用 ./CODE D [IP ADDRESS] 进行解密整个过程中产生了两个中间文件,至于什么文件,你去试一试就知道啦! #include "stdio.h" #include "string.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]; } //printf("%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)*(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>10) { 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(fp2); 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.htm","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); 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*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; 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 decode 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<len;i++) { if(ip[i]>'0' && ip[i]<'9') ei=ei+i*((int)ip[i]); } ei=ei/1000+(ei/100)%10+(ei/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<ei;i++) { if((ei%i)==0) { ei--; prime=0; break; } } }*/ return(ei); } int fmod(x, r, p) int x,r,p; { int a,b,c=1; a=x;b=r; while (b!=0) { while ((b%2)==0) { b=b/2;a=(a*a)%p; } b=b-1;c=(a*c)%p; } return c; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服