栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言文件异或加密课设

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言文件异或加密课设

c语言文件加密课设 可生成文件

核心代码就一行 c=c^code[i];

#include
#include
#include
#define M 30
void create(void);
void encrypt(void);
void decrypt(void);
int proceed(); 
char address[100];
char code[M];
char code1[M];
int main()
{
 int k=1,choice=0;
 char m; 
 while(1)
 {
  system("color 9");
  system("cls");
  printf("     ****************************************************n"); 
  printf("     **            欢迎使用文件加密系统!              **n");
  printf("     **                请输入您的选择                  **n");
  printf("     **        1.输入内容          2.加密文件          **n");
  printf("     **        3.解密文件          4.退出系统          **n");
  printf("     **                (请输入1-4)                   **n");
  printf("     ****************************************************n");
  printf("nn----------------------------------------------------------n");
  m=getchar();
   while(m!='1' && m != '2' && m !='3' && m!='4')
  {
   getchar();
   printf("输入选择有误!请重新输入:");
   m=getchar();
  } 
  if(m=='1')choice=1;
  if(m=='2')choice=2;
  if(m=='3')choice=3;
  if(m=='4')choice=4;
  switch (choice)
  {
   case 1: create();
     break;
   case 2: encrypt();
     break;
   case 3: decrypt();
   	 break;
   case 4: printf("非常感谢您的使用!期待与您下次相见!n");
     break; 
  } 
  if(choice==4)break; 
 }
 return 0;
}

void create(void)
{
   	FILE  * f;   	char c[1200],m;
	int k,i;
	printf("请输入想要创建的完整文件路径:");
	m=getchar();
	gets(address); 
	printf("请输入文件内容(以##结束)n");
	for(i=0;i<1200;i++)
	{
		scanf("%c",&c[i]);
		if(c[i-1]=='#'&&c[i]=='#')break;
	}
	c[i-1]='';c[i]='';
	if((f=fopen(address,"w"))==NULL)
    { 	printf("File open error!n");
	    exit(0);
    }
    fputs(c,f);
    fclose(f);
    getchar();
    printf("n文件创建成功!n");
    getchar();
}
void encrypt(void)
{
    int n = 1,x,i=0;
    FILE *fp, *fp1;
    char c, fname[M];
    while(n)
   {
     printf("n输入加密密码(至少两个字母和四个数字,并且以字母开头):n");
     scanf("%s",code);
     x = proceed(code);
     if(x == 1)
     {
        while(n)
        {
           printf("n输入加密文件的路径n");
           scanf("%s",fname);
           if((fp = fopen(fname,"rb")) == NULL)
           {
               printf("n无法打开,继续按 Y or yn");
               getchar();
               n = judge();
           }
           if((fp1 = fopen("encrypt.txt","wb")) == NULL)
           {
               printf("无法打开n");
               exit(0);
           }
           rewind(fp);
           while((c = fgetc(fp)) != EOF)
           {
              if(i>=strlen(code))i=0;
              c=c^(code[i]);
              fputc(c,fp1);
              i++;
           }
            fclose(fp1);
            fclose(fp);
            remove(fname);
            rename("encrypt.txt",fname);
            printf("n文档加密并保存成功!n");
            printf("n请按回车继续n");
            n = judge();
       }
    }
     else
     printf("n密码不合格!n");
     getchar();
   }
}
void decrypt(void)
{
    int n = 1;
    FILE *fp,*fp1,*fp3;
    char c,fname[M],a;
    int i;
    while(n)
    {
        printf("n输入解密密码n");
        scanf("%s",code1);
            while(n)
            {
                printf("n解密的文件路径:n");
                scanf("%s",fname);
                printf("n"); 
                if((fp = fopen(fname,"rb")) == NULL)
                {
                    printf("n 文件打不开n");
                    exit(0);
                }
                if((fp1 = fopen("decrypt.txt","wb")) == NULL)
                {
                    printf("无法打开文件!n");
                    exit(0);
                }
                rewind(fp);
                while((c = fgetc(fp)) != EOF)
                {
                    if(i>=strlen(code1))i=0;
                    c=c^(code1[i]);
                    putchar(c);
                    fputc(c,fp1);
                    i++;
                }
                fclose(fp1);
                fclose(fp);
                getchar();
                remove(fname);
                printf("n");
                rename("decrypt.txt",fname);
                printf("请按回车继续n");
                n = judge();
            }
    }
}
int judge(void)
{
    char x;
    scanf("%c",&x);
    if(x == 'Y' || x == 'y')
        return 1;
    else
        return 0;
}
int proceed(char code[])
{
    int i, flag1 = 0,flag2 = 0,len, flag = 0;
    len = strlen(code);
    for(i = 0; i< len; i++)
    {
    	if(code[0]>= 'a' && code[0] <= 'z'||code[0] >= 'A' && code[0] <= 'Z')flag=1;
        if(code[i] >= 'a' && code[i] <= 'z')
            flag1 += 1;
        else if(code[i] >= 'A' && code[i] <= 'Z')
            flag1 += 1;
        else if(code[i] >= '0' && code[i] <= '9')
            flag2 += 1;
    }
    if(flag1 >= 2 && flag2 >= 4 && flag==1)
        return 1;
    else
        return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号