html如何隐藏二进制字符串,如何用二进制代码隐藏字符串?

对不起,我很抱歉。

你的答案绝对正确,但问题是如何隐藏字符串并做得很好。

我是这样做的:

#include "HideString.h"

DEFINE_HIDDEN_STRING(EncryptionKey, 0x7f, ('M')('y')(' ')('s')('t')('r')('o')('n')('g')(' ')('e')('n')('c')('r')('y')('p')('t')('i')('o')('n')(' ')('k')('e')('y'))

DEFINE_HIDDEN_STRING(EncryptionKey2, 0x27, ('T')('e')('s')('t'))

int main()

{

std::cout << GetEncryptionKey() << std::endl;

std::cout << GetEncryptionKey2() << std::endl;

return 0;

}

HideString.h:

#include

#include

#include

#define CRYPT_MACRO(r, d, i, elem) ( elem ^ ( d - i ) )

#define DEFINE_HIDDEN_STRING(NAME, SEED, SEQ)\

static const char* BOOST_PP_CAT(Get, NAME)()\

{\

static char data[] = {\

BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO, SEED, SEQ)),\

'\0'\

};\

\

static bool isEncrypted = true;\

if ( isEncrypted )\

{\

for (unsigned i = 0; i < ( sizeof(data) / sizeof(data[0]) ) - 1; ++i)\

{\

data[i] = CRYPT_MACRO(_, SEED, i, data[i]);\

}\

\

isEncrypted = false;\

}\

\

return data;\

}

HideString.h中最棘手的一行是:

BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO, SEED, SEQ))

让我解释一下这条线。代码:

DEFINE_HIDDEN_STRING(EncryptionKey2, 0x27, ('T')('e')('s')('t'))

BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO,SEED,SEQ)

生成序列:

( 'T'  ^ ( 0x27 - 0 ) ) ( 'e'  ^ ( 0x27 - 1 ) ) ( 's'  ^ ( 0x27 - 2 ) ) ( 't'  ^ ( 0x27 - 3 ) )

BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO,SEED,SEQ))

生成:

'T' ^ ( 0x27 - 0 ), 'e' ^ ( 0x27 - 1 ), 's' ^ ( 0x27 - 2 ), 't' ^ ( 0x27 - 3 )

最后,

DEFINE_HIDDEN_STRING(EncryptionKey2, 0x27, ('T')('e')('s')('t'))

生成:

static const char* GetEncryptionKey2()

{

static char data[] = {

'T' ^ ( 0x27 - 0 ), 'e' ^ ( 0x27 - 1 ), 's' ^ ( 0x27 - 2 ), 't' ^ ( 0x27 - 3 ),

'\0'

};

static bool isEncrypted = true;

if ( isEncrypted )

{

for (unsigned i = 0; i < ( sizeof(data) / sizeof(data[0]) ) - 1; ++i)

{

data[i] = ( data[i] ^ ( 0x27 - i ) );

}

isEncrypted = false;

}

return data;

}

“我的强加密密钥”的数据如下所示:

0x00B0200C  32 07 5d 0f 0f 08 16 16 10 56 10 1a 10 00 08  2.]......V.....

0x00B0201B  00 1b 07 02 02 4b 01 0c 11 00 00 00 00 00 00  .....K.........

非常感谢您的回答!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值