如何更改代码加密而不是解密文件?

时间:2014-10-22 16:37:03

标签: c encryption fwrite

我使用下面的代码来解密一些图形文件。我想修改它,以便它可以再次加密它们。不幸的是,我是一名平面设计师,而且我只有非常基本的编程知识(而不是C语言)所以我不理解这个代码的水平允许我自己修改它。

#include <stdio.h>

int main (int argc, char **argv)
{
    FILE *inp, *outp;
    int i;
    char sig[] = "CF10", *ptr;

    if (argc != 3)
    {
        printf ("usage: decode [input] [output]\n");
        return -1;
    }
    inp = fopen (argv[1], "rb");
    if (inp == NULL)
    {
        printf ("bad input file '%s'\n", argv[1]);
        return -2;
    }
    ptr = sig;
    while (*ptr)
    {
        i = fgetc (inp);
        if (*ptr != i)
        {
            printf ("input file sig is not 'CF10'\n");
            return -2;
        }
        ptr++;
    }
    outp = fopen (argv[2], "wb");
    if (outp == NULL)
    {
        printf ("bad output file '%s'\n", argv[1]);
        return -2;
    }
    do
    {
        i = fgetc(inp);
        if (i != EOF)
            fputc (i ^ 0x8d, outp);
    } while (i != EOF);
    fclose (inp);
    fclose (outp);
    printf ("all done. bye bye\n");
    return 0;
}

1 个答案:

答案 0 :(得分:3)

这充其量只能被描述为模糊内容。它使用'xor'加密,其中一个优点就是自解密。

您可以在未加密的文件上运行代码并获取加密文件,也可以在加密文件上运行并获取未加密的文件。


我误读了代码;抱歉。您的代码读取CF10幻数,然后在xor之后写入其余数据; CF10告诉它它被遮挡了。要隐藏未显眼的数据,您应该将CF10幻数写入输出文件,然后读取输入并将其写入并写入。精炼版本的代码将测试文件的前四个字节(与CF10相等),以确保您不会重新模糊并且已经模糊了文件。

您可能需要处理一个选项参数,该参数确定是加密还是解密(隐藏或隐藏)。或者,您可以使用文件的前四个字节来告诉您是加密还是解密。

请注意,原始答案的基本点 - xor加密和解密基本上是相同的操作 - 仍然有效。