4

假设我有一个生成字符串的程序。我希望用私钥对该字符串进行签名,这样我就可以确定该字符串实际上是由程序生成的,而不是以任何其他方式生成的。

我能做到这一点的唯一方法是在代码中隐藏字符串,但在开源程序的情况下,您需要一种仅在编译时插入此密钥的方法。

完成此任务的最佳/更简单的方法是什么(使用 C++)?

(对于 C++,我正在考虑一些在编译时生成一些密钥的预处理器指令。)

4

1 回答 1

3

-D好吧,您可以使用预编译器常量,该常量可以通过Makefile.

结合此,您可以使用配置脚本生成 Makefile,来计算和设置这个常数。

-D name=definition 定义的内容被标记和处理,就好像它们出现在“#define”指令中的第三阶段一样。特别是,定义将被嵌入的换行符截断。如果您从 shell 或类似 shell 的程序调用预处理器,您可能需要使用 shell 的引用语法来保护字符,例如在 shell 语法中有意义的空格。

如果您希望在命令行上定义类似函数的宏,请在等号(如果有)之前用括号括住其参数列表。括号对大多数 shell 都有意义,因此您需要引用该选项。使用 sh 和 csh,-D'name(args...)=definition' 有效。

http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html

于 2013-08-23T12:02:27.880 回答