对文本文件加密解密程序(C设计)

Soso.com - 09-18

实现对文本文件的加密,解密操作。并写出n-s流程图

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

main()
{
void sc(char *fp,char *key,int Flen,int Klen);
FILE *fp;
char *pBuf,filename[20],key[20],ch;

printf("请输入选择:A、加密 B、解密 C退出\n");
ch=getchar();
while(ch!='c'&&ch!='C')
{
if(ch=='a'||ch=='A'||ch=='b'||ch=='B')
{
printf("请输入要打开的文件名:\n");
scanf("%s",filename);
if((fp=fopen(filename,"rb"))==NULL)
{printf("无法打开文件,请注意输入后缀!\n");
exit(0);
}

fseek(fp,0,SEEK_END);
int len=ftell(fp);
pBuf=new char[len+1];
rewind(fp);
fread(pBuf,1,len,fp);
pBuf[len]=0;
printf("%s\n",pBuf);
fclose(fp);

printf("请输入加密/解密的密码:\n");
scanf("%s",key);
sc(pBuf,key,len,strlen(key));

printf("请输入保存加密文件的文件名:\n");
scanf("%s",filename);
if((fp=fopen(filename,"wb"))==NULL)
{printf("无法保存文件,请注意磁盘是否已满!\n");
exit(0);
}
else
fwrite(pBuf,1,len,fp);
fclose(fp);
printf("请输入选择:A、加密 B、解密 C退出\n");
}
else {
printf("输入错误,请重新输入\n");
}
ch=getchar();
ch=getchar();
}
}
void sc(char *fp,char *key,int Flen,int Klen)
{int i,j,k;
for(i=0;i<Flen;i+=Klen)
for(j=i,k=0;k<Klen;j++,k++)
fp[j]^=key[k];

fp[i]='\0';
printf("%s\n",fp);
}