常规的字符串表示
printf("conventional...n");

解决明文暴露的问题
char strArray[] = { 'c', 'o', 'n', 'v', 'e', 'n', 't',
'i', 'o', 'n', 'a', 'l', '.', '.', '.', 'n', ' ' };
printf(strArray);

char strArray[] = { 'c' + 1, 'o' + 1, 'n' + 1, 'v' + 1, 'e' + 1, 'n' + 1, 't' + 1,
'i' + 1, 'o' + 1, 'n' + 1, 'a' + 1, 'l' + 1, '.' + 1, '.' + 1, '.' + 1, 'n' + 1, ' ' + 1 };
for (unsigned int index = 0; index < sizeof(strArray); index++)
{
strArray[index] -= 1;
}
printf(strArray);

实现上述过程
#define Enc(str) EncryptString(str).decrypt()
printf(Enc("encrypt string?"));
template<size_t N>
class EncryptString
{
public:
template<size_t... Index>
constexpr EncryptString(const char* plainString, std::index_sequence<Index...>)
: encBuffer{ (plainString[Index] + 1)... }
{}
__forceinline char* decrypt()
{
for (auto index = 0; index < N; index++)
{
encBuffer[index] -= 1;
}
return encBuffer;
}
private:
char encBuffer[N];
};
#define Enc(str) EncryptString<sizeof(str)>(str, std::make_index_sequence<sizeof(str)>{}).decrypt()
printf(Enc("conventional...n"));

Next
看雪ID:Istaroth
https://bbs.kanxue.com/user-home-777136.htm

# 往期推荐


球分享

球点赞

球在看
原文始发于微信公众号(看雪学苑):二进制明文字符串加密: 实现原理