- 论坛徽章:
- 0
|
从网上找的代码,为什么加解密都需要n呢 ,也就是说我每次请求要给我2个数字?
- void tencrypto(int e[MAX], int n[MAX])/*//对有需要的文件进行加密*/
- {
- FILE *fp;
- int i,k,count,temp,c;
- char *filename,ch;
- struct slink *p,*p1,*p2;
- struct slink *h;
- h=p=p1=p2=(struct slink * )malloc(LEN);
- h=NULL;
- printf("\n输入需要加密的文件路径 : ");
- filename = "c:\\aa.jpg";
- if((fp=fopen(filename,"r"))==NULL)
- {
- printf("Cannot open file !\n");
- exit(0);
- }
- printf("\n文件的原文内容:\n\n");
- count=0;
- while((ch=fgetc(fp))!=EOF)
- {
- putchar(ch);
- c=ch;
- k=0;
- if(c<0)
- {
- c=abs(c);/*/把负数取正并且做一个标记*/
- p1->bignum[MAX-2]='0';
- }
- else
- {
- p1->bignum[MAX-2]='1';
- }
- while(c/10!=0)
- {
- temp=c%10;
- c=c/10;
- p1->bignum[k]=temp;
- k++;
- }
- p1->bignum[k]=c;
- p1->bignum[MAX-1]=k+1;
- count=count+1;
- if(count==1)
- h=p1;
- else p2->next=p1;
- p2=p1;
- p1=(struct slink * )malloc(LEN);
- }
- p2->next=NULL;
- printf("\n");
- fclose(fp);
- filename ="encode";
- fp=fopen(filename,"w");
- p=p1=(struct slink * )malloc(LEN);
- p=h;
- printf("\n加密后文件中所形成密文:\n\n");
- if(h!=NULL)
- do
- {
- expmod( p->bignum , e ,n ,p1->bignum);
- ch=p1->bignum[MAX-2];
- printf("%c",ch);
- fputc(ch,fp);
- if ((p1->bignum[MAX-1]/10) ==0)/*/判断p1->bignum[99]的是否大于十;*/
- {
- ch=0+48;
- printf("%c",ch);
- fputc(ch,fp);
- ch=p1->bignum[MAX-1]+48;
- printf("%c",ch);
- fputc(ch,fp);
- }
- else
- {
- ch=p1->bignum[MAX-1]/10+48;
- printf("%c",ch);
- fputc(ch,fp);
- ch=p1->bignum[MAX-1]%10+48;
- printf("%c",ch);
- fputc(ch,fp);
- }
- for(i=0;i<p1->bignum[MAX-1];i++)
- {
- printf("%d",p1->bignum[i]);
- ch=p1->bignum[i]+48;
- fputc(ch,fp);
- }
- p=p->next;
- p1=(struct slink * )malloc(LEN);
- }while(p!=NULL);
- printf("\n\n");
- fclose(fp);
- return;
- }
复制代码 |
|