⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 des.cpp

📁 本程序的实现des加解密的功能
💻 CPP
字号:
#include "des.h"
  /**************************************************************
               本程序的实现des加解密的功能,每次对64位的密文进行加密,
	             从而实现对所有的文件的加解密.

        author: 李云飞   school:yunnan university
     ************************************************************/

int write(FILE *fp,char *e)
{ 
    int d,p;	
    for(p=0;p<8 ;p++)
	{
       fputc(e[p],fp);                  //将数据写到文件中			
	   d=-1;
	 }
	return d;
}

void encodefile(FILE *fp1,FILE *fp,int l,int m,char * k)
{
	int j,p,n,d,f;
    char *e,*c;
	c=(char *)malloc(8*sizeof(char));
	e=(char *)malloc(8*sizeof(char));
    f=(8-m);
    fputc((f+'0'),fp);
    for(j=0,d=0;j<(l-m);j++,d++)
	 {
		n=fgetc(fp1);                
        c[d]=n;

	    if(d==7)
		{
        e=Dencode(c,k);  
		d=write(fp,e);   
		}    
    }
   
    if(j!=l)                             
{
     for(p=0;p<m;p++)
	     c[p]=fgetc(fp1); 

        for(p=m;p<8;p++)                   
		 c[p]=' '; 	 c[p]='\0';
		
         e=Dencode(c,k); 
         write(fp,e);  
	}
}

void decodefile(FILE *fp1,FILE *fp,int l,char * k)
{
	int j,p=0,n,t,d;
    char *e,*c;
    t=fgetc(fp1)-48;

	c=(char *)malloc(8*sizeof(char));
	e=(char *)malloc(8*sizeof(char));

    for(j=0,d=0;j<l-9 || (t==8 && j<8);j++,d++)
	 {
		n=fgetc(fp1);                
        c[d]=n;

	    if(d==7)
		{
        e=Ddecode(c,k); 
		d=write(fp,e);   
		 }    
    }
	if(t!=8)
	{
     for(j=0;j<8;j++)
	 	c[j]=fgetc(fp1); 
	   e=Ddecode(c,k); 

	   for(j=0;j<(8-t);j++)
          fputc(e[j],fp);    
	 
	}
}
//读文件并且进行加密
void file(char * k,char* type,char* filename1,char* filename2)
{  

	FILE        *fp1,*fp;
    long int    j=0,l,m,i=0;  
    int         h=0;
                                
    l=getSizefile(filename1);           
    m=l%8;

    if( (fp1=fopen(filename1,"rb"))==NULL) 
	{
	   printf("can not open file\n");
	   exit(0);
	}

    fp=fopen(filename2,"wb");             
  
      if(strcmp(type,"-e")==0) 
          encodefile(fp1,fp, l, m,k);
	  if(strcmp(type,"-d")==0) 
          decodefile(fp1,fp, l,k) ;

		fclose(fp1);                         
	    fclose(fp);


}
//例:密钥,-e/-k,文件,文件
void main(int argc, char * argv[])
{
 	
printf("%s\n",Ddecode(Dencode("computer","security"),"security")); 
file(argv[1],argv[2],argv[3],argv[4]);

} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -