编译时加密串
编译时加密串,运行时动态解密
.此自定义加密算法
可增加破解的难度,因为攻击者不仅需要逆向工程代码
,还需要理解加密算法
.
这样对代码的改动小,不影响代码可读性.
下面是使用boost.hana
编译时加密
串的示例:文章来源:https://www.toymoban.com/news/detail-813249.html
#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!"
.
输出:文章来源地址https://www.toymoban.com/news/detail-813249.html
你好,世界!
hello, world!
到了这里,关于2401C++,C++编译时自动加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!