我不希望逆向工程师在我的应用程序中读取硬编码字符串的纯文本。对此的简单解决方案是使用简单的 XOR-Encryption 。问题是我需要一个转换器,在我的应用程序中它看起来像这样:
//Before (unsecure)
char * cString = "Helllo Stackoverflow!";
//After (secure)
char * cString = XStr( 0x06, 0x15, 0x9D, 0xD5FBF3CC, 0xCDCD83F7, 0xD1C7C4C3, 0xC6DCCEDE, 0xCBC2C0C7, 0x90000000 ).c();
是否有可能通过使用一些结构来维护干净的代码,例如
//Before (unsecure)
char * cString = "Helllo Stackoverflow!";
//After (secure)
char * cString = CRYPT("Helllo Stackoverflow!");
它也应该适用于相当长的字符串(1000 个字符?:-))。先感谢您
原文由 Listing 发布,翻译遵循 CC BY-SA 4.0 许可协议
这个博客 提供了一个在 C++ 中编译时字符串散列的解决方案。我想原理是一样的。不幸的是,您必须为每个字符串长度创建一个唯一的宏。