在开源代码中签名字符串

时间:2013-08-23 11:59:45

标签: c++ algorithm encryption rsa signature

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

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

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

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

1 个答案:

答案 0 :(得分:3)

好吧,您可以使用预编译常量,该常量可以通过-D中的Makefile标记传递给您的编译器。

与此相结合,您可以使用configure脚本生成Makefile,以计算和设置此常量。

  

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

     

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

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