在开源代码中对字符串进行签名
Sign a string in an open source code
假设我有一个生成字符串的程序。我希望这个字符串用私钥签名,这样我就可以确保这个字符串实际上是由程序生成的,而不是以任何其他方式生成的。
我能做到这一点的唯一方法是将字符串隐藏在代码中,但在开源程序的情况下,您需要一种只在编译时插入此键的方法。
实现此任务的最佳/更简单的方法是什么(使用C++)?
(对于C++,我正在考虑在编译时生成一些密钥的预处理器指令。)
好吧,您可以使用预编译器常量,该常量可以通过Makefile
中的-D
标志传递给编译器。
结合此,您可以使用configure脚本生成Makefile,计算并设置此常量。
-D名称=定义定义的内容被标记化和处理,就好像它们出现在"#define"指令的第三个翻译阶段一样。特别是,定义将被嵌入的换行符截断。如果从shell或类似shell的程序调用预处理器,则可能需要使用shell的引用语法来保护在shell语法中有意义的字符,如空格。
如果您希望在命令行上定义一个类似函数的宏,请在等号(如果有的话)之前用括号括起它的参数列表。括号对大多数外壳来说都很有意义,因此您需要引用该选项。对于sh和csh,-D名称(args…)=定义'有效。
http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html