老师 发表于 2016-1-12 15:36:13

自己写的简单的文件加解密程序


下面是程序的代码,不过里面有一个小问题,有兴趣的同学可以研究下“讲变量num改为char看看会发生什么事情,可以的话解决它。”当然了加解密的算法非常简单,就是法伤来和大家交流交流的。

                                                                                             代码回复可见!
**** Hidden Message *****#include <stdio.h>
#include <stdlib.h>

void jiami();
void jiemi();

int main()
{
      char *ch="声明:\n【1】该程序不保证运行的正确性,所以请在使用前备份操作文件。\n【2】使用该程序导致的一切不良后果由操作者承担。\n【3】您开始使用本程序即表示您已同意本声明。\n【4】感谢您的使用!\n";
      intnum,temp;
      
      printf("========文件加/解密程序========\n");
      printf("\n%s\n",ch);
str:printf("\n\n========菜单========\n");
      printf("【1】加密文件操作\n");
      printf("【2】解密文件操作\n");
      printf("【3】退出程序操作\n");
      printf("\n\n请选择:");
yan:scanf("%d",&num);
      if(num<1||num>3)
      {
                printf("%c未定义的指令,请重新输入:",num);
                goto yan;
      }
      
      switch(num)
      {
                case 1:jiami();
                break;
                case 2:jiemi();
                break;
                case 3:exit(1);
      }
      printf("\n\n========成功完成========\n\n");
      printf("========您希望========\n\n");
      goto str;
      
      return 0;
}

void jiami()
{
      FILE *infile,*outfile;
      char ofname,nfname,ch;
      
      printf("\n请输入需要加密的完整文件名(包含扩展名)\n");
      printf("文件名:");
      ch=getchar();
      gets(ofname);
      printf("请输入加密后完整文件名\n");
      printf("文件名:");
      gets(nfname);
      
      infile=fopen(ofname,"rb");
      outfile=fopen(nfname,"wb");
      if(infile==NULL||outfile==NULL)
      {
                printf("文件打开失败,程序已停止\n");
                exit(1);
      }
      
      printf("\n\n========正在加密文件,请售后...========\n\n");
      rewind(infile);
      rewind(outfile);
      while(!feof(infile))
      {
                ch=fgetc(infile);
                ch+=10;
                fputc(ch,outfile);
      }
      fclose(infile);
      fclose(outfile);
}

void jiemi()
{
      FILE *infile,*outfile;
      char ofname,nfname,ch;
      
      printf("\n请输入需要解密的完整文件名(包含扩展名)\n");
      printf("文件名:");
      ch=getchar();
      gets(ofname);
      printf("请输入解密后完整文件名\n");
      printf("文件名:");
      gets(nfname);
      
      infile=fopen(ofname,"rb");
      outfile=fopen(nfname,"wb");
      if(infile==NULL||outfile==NULL)
      {
                printf("文件打开失败,程序已停止\n");
                exit(1);
      }
      
      printf("\n\n========正在解密文件,请售后...========\n\n");
      rewind(infile);
      rewind(outfile);
      while(!feof(infile))
      {
                ch=fgetc(infile);
                ch-=10;
                fputc(ch,outfile);
      }
      fclose(infile);
      fclose(outfile);
}

大黑蟒 发表于 2018-1-18 00:52:21

看看

Mophestal 发表于 2018-1-18 00:27:03

看看

老师 发表于 2018-1-17 20:28:58

进击的小FF 发表于 2018-1-17 14:32
if(num3)
      {
                printf("%c未定义的指令,请重新输入:",num);


en嗯是清楚些

进击的小FF 发表于 2018-1-17 14:32:48

    if(num<1||num>3)
      {
                printf("%c未定义的指令,请重新输入:",num);
                goto yan;
      }

这一段是不是可以全都放在switch中最后的default中,必要的话再加一个while()的语句排除其他情况的非法输入。
个人觉得这么写清楚一些。
另外不是很推荐使用goto,一点小想法

进击的小FF 发表于 2018-1-17 14:16:14

{:5_97:}研究研究

wangjie371324 发表于 2016-8-24 15:30:34

自己写的简单的文件加解密程序

该亚 发表于 2016-2-17 16:44:58

辛苦楼主了,支持楼主

FaRvN 发表于 2016-1-17 17:06:19

~....~!路过研究

过于简单 发表于 2016-1-17 15:58:13

路过看看!!!

落宝金钱 发表于 2016-1-17 13:41:45

看看

1048870116 发表于 2016-1-17 12:17:36

我就像看看隐藏的东西

黑龍 发表于 2016-1-15 22:05:15

不是XOR加密 昨天没看代码,是不是凯撒密码?

の祉崭之殇__ 发表于 2016-1-15 21:08:53

谢谢您了 楼主

黑龍 发表于 2016-1-14 21:11:58

xor加密吗

edtwar 发表于 2016-1-14 17:28:21


好贴啊

超级补丁 发表于 2016-1-13 20:41:30

那个验证呢

heblhc 发表于 2016-1-13 17:15:50

学习学习

老师 发表于 2016-1-13 11:56:28

阴影中的曙光 发表于 2016-1-12 19:02
其实不太推荐用goto;考虑下我这种写法代替goto吧

恩恩,谢谢。
不过如果将判断的条件改为字符型就会出问题,
char num;
num=getchar();
while(num<'a'||num>'c')
这样的话while里面的语句就会执行一次,即使是输入a b c也是一样。我也想过加多一个getchar(),可是这样就会死循环了,
最后一个问题,你这个帖子的代码是怎么弄的??

SXTDU 发表于 2016-1-12 23:46:50

看下
页: [1] 2
查看完整版本: 自己写的简单的文件加解密程序