本文主要是介绍2401C++,C++编译时自动加密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编译时加密串
编译时加密串,运行时动态解密
.此自定义加密算法
可增加破解的难度,因为攻击者不仅需要逆向工程代码
,还需要理解加密算法
.
这样对代码的改动小,不影响代码可读性.
下面是使用boost.hana
编译时加密
串的示例:
#include <string>
#include <iostream>
#include <boost/hana/string.hpp>
#include <boost/hana/tuple.hpp>
#include <boost/hana/transform.hpp>
namespace hana = boost::hana;
inline constexpr char EncryptChar(char ch) {return ch == 'z' ch : ch ^ 'z';
}
template <typename HANA_STR>
constexpr auto EncryptString(HANA_STR hana_str) {constexpr auto hana_tuple = hana::to_tuple(hana_str);constexpr auto encrypted_tuple = hana::transform(hana_tuple, [](auto x) {constexpr char ch = hana::value(x);return hana::integral_c<char, EncryptChar(ch)>;});constexpr auto encrypted_str = hana::unpack(encrypted_tuple, hana::make<hana::string_tag>);return encrypted_str.c_str();
}
std::string DecryptString(std::string encryped_str) {for (char& ch : encryped_str)if(ch != 'z')ch ^= 'z';return std::move(encryped_str);
}
#define ENCRYPT_STR(str) DecryptString(EncryptString(BOOST_HANA_STRING(str)))
int main() {std::cout << ENCRYPT_STR("你好") << ",世界!" << std::endl;std::cout << ENCRYPT_STR("hello") << ", world!" << std::endl;return 0;
}
开发环境:Windows11,VS202217.8.4,Boost1.84,C++17,C++20
用记事本打开编译
后的exe
,无法搜索到"你好",“hello”,可搜索到没有加密的",世界!
"和",world!"
.
输出:
你好,世界!
hello, world!
这篇关于2401C++,C++编译时自动加密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!