将程序放入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[38]={'\0'};
for(int i=0;i<38;i++)
{
if (b[i] >= 'A' && b[i] <= 'Z')
{ // 处理大写字母
if (b[i] >= 'A' && b[i] <= 'P')
{ // 对应原始字符 K-Z
c[i] = (char)(b[i] + 10);
} else
{ // 对应原始字符 A-J
c[i] = (char)(b[i] - 16);
}
}
else if (b[i] >= 'a' && b[i] <= 'z')
{ // 处理小写字母
if (b[i] >= 'a' && b[i] <= 'p')
{ // 对应原始字符 k-z
c[i] = (char)(b[i] + 10);
}
else
{ // 对应原始字符 a-j
c[i] = (char)(b[i] - 16);
}
}
else
{ // 非字母直接复制
c[i] = b[i];
}
}
for(int i=0;i<38;i++)
{
printf("%c",c[i]);
}
return 0;
} ; 运行得到 “zfua{w164675262033v4w49vxz7z9wxu28u75}”。一看z和f是6个偏移。就凯撒解密即可。
|