开发加密程序时,有很多种加密算法可以选择,blowfish,AES,还有简单的异或运算啦等等
其实这些都不是关键,关键点是如何隐藏加密算法的key
如果将key作为明文保存在程序中,很容易在数据段中查看到相应的值
从而失去了加密的意义
由此可见,一个关键点在于隐藏key字符
使用boost库的序列化宏,可以简单的实现隐藏key的功能
代码如下:
1 #define CRYPT_MACRO(r, d, i, elem) ( elem ^ ( d - i ) ) 2 3 #include <boost/preprocessor/cat.hpp> 4 #include <boost/preprocessor/seq/for_each_i.hpp> 5 #include <boost/preprocessor/seq/enum.hpp> 6 7 #define DEFINE_HIDDEN_STRING(NAME, SEED, SEQ) 8 static const char* BOOST_PP_CAT(Get, NAME)() 9 { 10 static char data[] = { 11 BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO, SEED, SEQ)), 12 '