findit 解题思路
将程序放入jdgui,查看oncreate函数。是正向加密运算。第一部分,是对17位长的x数组变换。这个不知道干啥的,因为数组长是38位的,第二个变换就是38位长,所以对其逆运算。贴上c++代码:#include <iostream>
#include <vector>
#include <cmath>
#include <iomanip>
// 基类:图形
char b[] = {'p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}'};
int main() {
char c={'\0'};
for(int i=0;i<38;i++)
{
if (b >= 'A' && b <= 'Z')
{ // 处理大写字母
if (b >= 'A' && b <= 'P')
{ // 对应原始字符 K-Z
c = (char)(b + 10);
} else
{ // 对应原始字符 A-J
c = (char)(b - 16);
}
}
else if (b >= 'a' && b <= 'z')
{ // 处理小写字母
if (b >= 'a' && b <= 'p')
{ // 对应原始字符 k-z
c = (char)(b + 10);
}
else
{ // 对应原始字符 a-j
c = (char)(b - 16);
}
}
else
{ // 非字母直接复制
c = b;
}
}
for(int i=0;i<38;i++)
{
printf("%c",c);
}
return 0;
} ;运行得到 “zfua{w164675262033v4w49vxz7z9wxu28u75}”。一看z和f是6个偏移。就凯撒解密即可。
页:
[1]