Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加密C文件的编译_C_Encryption - Fatal编程技术网

加密C文件的编译

加密C文件的编译,c,encryption,C,Encryption,实际上,有一种方法可以打开一个文件来设置加密密钥或密码,这样任何其他用户(谁知道呢除外)都无法使用 vim-x test.c(假设文件名为test.c) 它将请求加密密钥,然后我们可以编写代码 但是,当我使用gcc(在Linux中)或cc(在solaris中)编译时,它会给出一些错误列表,如下所示: encrypted.c", line 1: invalid source character: <0x17> "encrypted.c", line 1: invalid source

实际上,有一种方法可以打开一个文件来设置加密密钥或密码,这样任何其他用户(谁知道呢除外)都无法使用

vim-x test.c(假设文件名为test.c)

它将请求加密密钥,然后我们可以编写代码

但是,当我使用gcc(在Linux中)或cc(在solaris中)编译时,它会给出一些错误列表,如下所示:

 encrypted.c", line 1: invalid source character: <0x17>
"encrypted.c", line 1: invalid source character: <0xffffff96>
"encrypted.c", line 1: invalid source character: <0xffffffd8>
"encrypted.c", line 1: invalid source character: <0xffffffa9>
"encrypted.c", line 1: invalid source character: <0xffffffcc>
encrypted.c”,第1行:无效源字符:
“encrypted.c”,第1行:无效的源字符:
“encrypted.c”,第1行:无效的源字符:
“encrypted.c”,第1行:无效的源字符:
“encrypted.c”,第1行:无效的源字符:
有没有办法编译这个加密文件,或者我在编译时出错了(这样做是否无效)

下面是test.c的代码

#include <stdio.h>

#define CUBE(x) ((x)*(x)*(x))

int main()
{
int x = 5;
int val;
val = CUBE(++x);
printf("val is: %d",val);
return 0;
}
#包括
#定义立方体(x)((x)*(x)*(x))
int main()
{
int x=5;
int-val;
val=立方体(++x);
printf(“val为:%d”,val);
返回0;
}

通过管道将文件解密,然后通过管道将输出传输到编译器。由于有许多方法可以对文件进行加密,您应该自己加密,您不能指望编译器为您进行加密。

您需要创建一个Makefile,该Makefile将在每次gcc执行时只编译一个.c文件。然后您需要ke gcc从stdin读取源代码。然后您需要一个解密工具,该工具将解密后的源代码输出到stdout,这样您就可以通过管道将其传输到gcc

您可以通过创建一个包装器脚本/程序来扩展此解决方案,以解释编译器命令行,并使用经过适当修改的参数调用真正的编译器,将未加密的源代码传递给编译器(如果单个命令行中有多个源文件,则可能执行多次)。这样您就可以使用现有的生成文件


但是,实现这一点的第一步是,您需要能够输出到stdout的解密工具,这样您就可以通过管道将其传输到编译器。
vim
可能可以为您实现这一点,使用正确的命令行…

您所说的“加密”是什么意思"? 显然,您的编译器将不知道如何处理加密的源代码。如果文件已加密,则它不再完全是c源代码文件,那么您希望gcc如何读取此文件?@ascii lime如何在editor@stijn:这意味着这样做完全无效?多维数据集(++x)调用未定义的行为。