/*
一个通过密码才能操作加密或解密的代码
*/
#include<stdio.h>
#include<string.h>
int at()//密码登录器
{
int i=2;
char *s="yw123";
char a[100]={0};
printf("输入密码:\n");
gets(a);
while(strcmp(s,a))
{
if(!i)
{
printf("错误已达3次,按任意键退出:\n");
gets(a);
return 0;
}else{
printf("密码错误,还剩%d次机会:\n",i);
i--;
}
memset(a,0,sizeof(a));
gets(a);
if(!strcmp(s,a))
{
printf("密码通过\n");
return 1;
}
}
}
void code (char *p,int n)//加密算法
{
int i=0;
for(i;i<n;i++)
{
p[i]+=5;
}
}
void decode (char *p,int n)//解密算法
{
int i=0;
for(i;i<n;i++)
{
p[i]-=5;
}
}
int main()
{
int i=0,j=0;
FILE *p=(0);
FILE *p1=(0);
char a[1024*20]={0};
char b[100]={0};
char c[100]="d:\\note\\";//文件路径的字符串
char d[100]="d:\\note\\A";//文件名前加一个A区别开已有的文件名
if(!at()){goto end;}
A: printf("加密:9 解密:0\n");//提示 用户想进行加密还是解密操作
scanf("%d",&j);
printf("请输入文件名: ");
scanf("%s",b);
strncat(c,b,strlen(b));//把输入的文件名追加到代表文件路径的字符串后
strncat(d,b,strlen(b));
p=fopen(c,"rb");//字符串做参数
p1=fopen(d,"wb");
printf("\n\n 正在操作...");
while(!feof(p))
{
memset(a,0,sizeof(a));
i=fread(a,sizeof(char),sizeof(a),p);
if(j==0){decode(a,i);}//根据J的值判断使用加密还是解密函数
else if(j==9){code(a,i);}
fwrite(a,sizeof(char),i,p1);
}
fclose(p);
fclose(p1);
printf("\n\n操作成功! 继续请按 1 : ");
scanf("%d",&j);
if(j==1){goto A;}//若J=1,则函数跳转到A 标示语句继续执行
end: return 0;
} |
|