注册 登录
编程论坛 C语言论坛

文件加密

石碣 发布于 2019-06-24 17:27, 2349 次点击
#include <stdio.h>
#define IN "in.txt"
#define OUT "out.txt"
#define KEY 0xaaaa//宏定义
void scrambler(const char *in, const char *out, unsigned char key)
{
    FILE *i, *o;//定义指向FILE类型的指针变量
    int c;
   
    i = fopen(in, "rb");
    o = fopen(out, "wb");//打开文件,因为假定可读写,所以对是否成功不做判断
    while((c = fgetc(i))!=EOF)//读入字符直到文件结尾
    {
        c^=key;//执行异或加密或解密
        fputc(c,o);//写入文件
    }
   
    fclose(i);
    fclose(o);
}
int main()
{
    scrambler(IN,OUT,KEY);
    return 0;
}
一直运行不了程序,求大佬指点
9 回复
#2
幻紫灵心2019-06-24 18:37
把函数参数 key 改为 int
#3
石碣2019-06-24 23:58
不合适,这个题是    文件加密程序:将待加密文件以二进制打开,读入32个字节,分别与口令异或,在将4、5、6三个字分别与0xaaaa异或,即完成加密,执行第二次就解密。
但这不明白“将待加密文件以二进制打开,读入32个字节”
求指点
#4
zhulei19782019-06-25 11:07
你说的一直运行不了程序指的是什么呢
#5
石碣2019-06-25 11:41
只有本站会员才能查看附件,请 登录

运行程序出来这个
麻烦大佬指点
#6
石碣2019-06-25 11:41
只有本站会员才能查看附件,请 登录

运行程序出来这个
麻烦大佬指点
#7
石碣2019-06-25 11:58
挺急的,求大佬帮忙看看
#8
顾长庚2019-06-25 21:20
#include <stdio.h>
#define KEY 0xaaaa//宏定义
void scrambler(const char *in, const char *out, unsigned char key)
{
    FILE *i, *o;//定义指向FILE类型的指针变量
    int c;
   
    i = fopen(in, "rb");
    o = fopen(out, "wb");//打开文件,因为假定可读写,所以对是否成功不做判断
    while((c = fgetc(i))!=EOF)//读入字符直到文件结尾
    {
        c^=key;//执行异或加密或解密
        fputc(c,o);//写入文件
    }
   
    fclose(i);
    fclose(o);
}
int main()
{
    char *strpath = "D:\\1.txt";
    char *pathstr = "D:\\2.txt";
    scrambler(strpath,pathstr,KEY);
    return 0;
}
在D盘中新建一个文件1.txt,随便写点东西保存。你的报错应该是读出的流为空导致的
#9
顾长庚2019-06-25 21:25
回复 7楼 石碣
你可以试着把宏定义中地址独立出来,读出来文件流为空,是不是你给的地址就有问题,本来就不存在in.txt这个文件,所以才导致stream != null
#10
石碣2019-06-25 23:04
如何操作,求指点。
1