能力值:
( LV8,RANK:130 )
|
-
-
2 楼
简单分析下
主要是满足如下公式即可
memcmp(Hash(name), EnCrypt(key))== 0
Hash可以直接扣代码,这个不用管
逆向EnCrypt函数代码为:
void EnCode(char* szkey)
{
int nlen = strlen(szkey);
int nTemp = 0;
int nCount = 0;
BYTE bTableValue = 0;
char szReturn[0x20] = {0};
for (int i=0; i<nlen; i++)
{
bTableValue = Table[szkey[i]];
if (nTemp<=3)
{
nTemp = (nTemp - 3) & 7;
if (nTemp == 0)
{
szReturn[nCount] |= bTableValue;
nCount++;
continue;
}
}
else
{
nTemp = (nTemp - 3) & 7;
szReturn[nCount] |= bTableValue>>nTemp;
nCount++;
}
szReturn[nCount] |= bTableValue <<(8 -nTemp);
}
}
咋一看还真不知道怎么写解密算法,其实仔细观察可以发现加密是5个为一循环,
我们只要对Hash后的值进行分组解密就可以了
|
能力值:
(RANK:760 )
|
-
-
3 楼
经过评委会审定,你本题的得分是:100分
|
|
|