?? 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 + -