| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1890 人关注过本帖
标题:求助!要做一个文件加密解密系统,但运行时输入文件名无法打开,解密也没法 ...
只看楼主 加入收藏
shirney
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-30
结帖率:0
收藏
已结贴  问题点数:10 回复次数:10 
求助!要做一个文件加密解密系统,但运行时输入文件名无法打开,解密也没法进行
文件那章老师没讲,所以我是照着书瞎搞的==
系统有一个保护密码, 输入密码则可运行,然后加密解密,操作时需要输入相同的密钥。还可以修改保护密码。用的软件是Dev c++

检查的时候栏里显示【错误】id returned 1 exist status,这个是什么意思?

#include <stdio.h>
#include <stdlib.h>
void encrypt(FILE *fp_scr,char *key,FILE *fp_dest);
void XiuGai();
void jiemi();
void jiami();
int b=123;
int main () {
    char ch;
    int i,a,c;
   
    printf("input password:");
    scanf("%d",&a);
    if(a==b){
            do{
               system("cls");
               for(i=0;i<50;i++)
                  printf("*");
               printf("\n");
               printf("\t 1:  加密\n");
               printf("\t 2:  解密\n");
               printf("\t 3:  改密\n");
               printf("\t 4:   退出\n");
               for(i=0;i<50;i++)
                  printf("*");
               printf("\n");
            
            do{
            printf("\t  操作");
            ch=getchar();
            fflush(stdin);
            if ((ch>='1')&&(ch<='4'))
               break ;
            }while((ch<'1')||(ch>'4'));
            
            switch (ch){
                case '1':jiami(); break;
                case '2':jiemi(); break;
                case '3':XiuGai(); break;
                case '4':exit(0);   
            }
            
            system("pause");
    }while(1);
   
    }else
    printf("wrong!\n");
    return 0;

}
void encrypt(FILE *fp_scr,char *key,FILE *fp_dest){
            char buff[50];
            int len,i;
           
            while ((len=fread(buff,sizeof(char),5,fp_scr))>0){
            for(i=0;i<len;i++)
               buff[i] ^=key[i];
               fwrite(buff,sizeof(char),len,fp_dest);
        }
    }
   
   

void XiuGai()
{
    int a=0,c=0;
    int i=0;
    do
    {
        printf("pre password?");
        scanf("%d",&a);
        if(a!=123)
        {
            printf("wrong?\n");
        }
        else
        {
            break;
        }
    }while(1);

        printf("new password?\n");
        scanf("%d",&a);
        
    b=a;
}

void jiami(){
    char ch,filename[50],key[5];
    FILE *fp1,*fp2;
    printf("input 5 words:");
    scanf("%s",key);
    printf("input a file:");
    scanf("%s",filename);
    fp1=fopen(filename,"r");
    fp2=fopen("jiami.txt","w");
    if(fp1==NULL||fp2==NULL){
        printf("error!\n");
    }
    encrypt(fp1,key,fp2);
    fclose(fp1);
    fclose(fp2);
}
void jiemi(char *key){
    char ch,filename[50],key2[5];
    FILE *fp1,*fp2;
    printf("input 5 words:");
    scanf("%s",key2);
    if(key2==key){
   
    printf("input a file:");
    scanf("%s",filename);
    fp1=fopen(filename,"r");
    fp2=fopen("jiemi.txt","w");
    if(fp1==NULL||fp2==NULL){
        printf("error!\n");
    }
    encrypt(fp1,key,fp2);
    fclose(fp1);
    fclose(fp2);}else{
        printf("wrong!\n");
    }
}



[此贴子已经被作者于2015-12-30 19:59编辑过]

2015-12-30 12:52
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:5 
报什么错?

一片落叶掉进了回忆的流年。
2015-12-30 12:55
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
你的解密函数声明和实现 形参不一致

DO IT YOURSELF !
2015-12-30 13:05
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
if(key2==key)  这个字符串比较是不能这样比较的  应该使用strcmp

DO IT YOURSELF !
2015-12-30 13:09
shirney
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-30
收藏
得分:0 
回复 2楼 诸葛欧阳
显示 wrong!
2015-12-30 14:17
shirney
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-30
收藏
得分:0 
回复 4楼 wp231957
呃,没学……
2015-12-30 14:17
shirney
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-30
收藏
得分:0 
回复 4楼 wp231957
我试了一下,这回没跳出wrong了,它直接停止运行了。
2015-12-30 15:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 7楼 shirney
你咋弄的  代码上来

DO IT YOURSELF !
2015-12-30 16:03
shirney
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-30
收藏
得分:0 
回复 8楼 wp231957
就是把if(key==key2)改成了if(strcmp(key,key2)==0)
2015-12-30 16:44
shirney
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-30
收藏
得分:0 
检查的时候栏里显示【错误】id returned 1 exist status,这个是什么意思?
2015-12-30 19:58
快速回复:求助!要做一个文件加密解密系统,但运行时输入文件名无法打开,解密也 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041767 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved