c - 我如何#include 包含加密字符串的文件?

标签 c windows visual-studio encryption mingw

我正在使用 MinGW/gcc 在 Windows 上编写 C 应用程序。我需要使用 #include 指令来包含一个包含加密字符串的文件。该字符串将在运行时解密。我想这样做,以便在使用十六进制编辑器查看可执行文件时不会看到该字符串。

我试过了,但是不行。不过你明白了:

char *hidden_str =
#include "encrypted_text.dat"

其中可能有未转义的内容使编译器感到困惑。我不知道。不知道加密后会怎样。

如果有更好的方法,我愿意接受。

最佳答案

如果您在安装 MinGW 时安装并配置了 MSYS,您应该可以访问名为 xxd 的命令,它需要一个文件的十六进制转储。通过使用 -i 命令行标志,您可以让它输出一个 C 语言友好的文件,您可以轻松导入该文件。

一个示例调用是:

xxd -i in_file output.h

output.h 的内容将如下所示:

unsigned char in_file[] = {
  0x68, 0x65, 0x6c, 0x6c, 0x6f
};
unsigned int in_file_len = 5;

然后您可以将该文件包含到您的 C 源代码中并访问它:

#include "output.h"

unsigned int i;
for(i = 0; i < in_file_len; i++)
{
    printf("%c", in_file[i]);
}

关于c - 我如何#include 包含加密字符串的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240283/

相关文章:

c - 如何让我的 gtk 应用程序使用深色主题?

java - 如何知道Windows XP中包含java运行时的目录?

php - CURLOPT_VERBOSE 不工作

windows - 防病毒软件阻止 Qt 应用程序和 "unknown developer"消息

visual-studio - 安装 WDK VC++ 后坏了

c - 用 C 读取客户端的所有行

c - 如何将整数分配给c中的指针?

c# - .NET/ASP.NET 与 Java 的高级功能比较

c# - ClosedXML 添加公式会创建不可读的内容

c - 使用 Win32 Api 在 C 程序中进行串行连接