A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
一个通过密码才能操作加密或解密的代码
*/
#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;

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马