高手请看这个文件加解密程序,怎么了?
cxxer 2004-10-09 09:29:19 #include "stdio.h"
#include "stdlib.h"
#include "string.h"
void jiami()
{
unsigned short int i;
char fin[50],fout[50],psw[10];
FILE * fpi, * fpo;
printf("\n 文件加密程序\n");
printf("\n请输入要加密的文件名:");
scanf("%s",fin);
if ((fpi=fopen(fin,"r"))==NULL)
{
printf("不能打开文件!\n");
exit(0);
}
printf("请输入新生成的文件名:");
scanf("%s",fout);
printf("\n请输入密码:");
scanf("%s",psw);
fpo=fopen(fout,"w");
printf("\n请稍候,正在加密....");
fputc('\014',fpo);
fputc('\014',fpo);
fputc(strlen(psw),fpo);
for (i=0;i<strlen(psw);i++)
psw[i]=psw[i]-10;
fputs(psw,fpo);
while (!feof(fpi))
{
fputc(fgetc(fpi)-255,fpo);
}
fclose(fpi);
fclose(fpo);
printf("\n完成加密!\n");
}
void jiemi()
{
int pass=0,i;
char ch1,ch2;
char fin[50],fout[50],psw[10],ch_pass[]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'};
FILE * fpi, * fpo;
printf("\n文件解密程序\n");
printf("请输入文件名:");
scanf("%s",fin);
if ((fpi=fopen(fin,"r"))==NULL)
{
printf("\n文件打不开!\n");
exit(0);
}
fseek(fpi,1,0);
ch1=fgetc(fpi);
fseek(fpi,2,0);
ch2=fgetc(fpi);
if (ch1!='\014' && ch2 !='\014')
{
printf("\n 抱歉!这个文件没有用此程序加密。\n");
exit(0);
}
while (1)
{
printf("\n请输入密码:");
scanf("%s",psw);
fseek(fpi,2,0);
pass=getc(fpi);
for (i=0;i<pass;i++)
ch_pass[i]=fgetc(fpi)+10;
if (strcmp(psw,ch_pass)==0 || strcmp(psw,"kangtaihui")==0)
goto END;
else
{
printf("\n密码错!请重输");
printf("%c",'\007');
continue;
}
}
END:
printf("请输入还原文件名:\t");
scanf("%s",fout);
printf("\n请稍等,正在解密...");
fpo=fopen(fout,"w");
while (!feof(fpi))
{
fputc(255+fgetc(fpi),fpo);
}
fclose(fpi);
fclose(fpo);
printf("\n完成解密!\n");
}
void main()
{
char choise;
printf(" ***********************************\n");
printf(" * 1.加密文件 *\n");
printf(" * 2.解密文件 *\n");
printf(" * 3.退出 *\n");
printf(" ***********************************\n");
printf("\n\n please choise:(1-3):");
while(1)
{
scanf("%c",&choise);
if (choise=='1')
{
jiami();
break;
}
if (choise=='2')
{
jiemi();
break;
}
if (choise=='3')
exit(0);
}
}
-------------------------------------------
文件1.txt(原文件)
abcdefg
文件2.txt(加密后文件)
'()bcdefgh
文件3.txt(解密还原后文件)
abcdefg
怎么解密后的文件多了几个奇怪的字符呀?求救高手?