【发布时间】:2021-03-10 14:54:23
【问题描述】:
谁能帮我看看这是什么类型的算法?
public class hf1 {
public static final String[] f3650a = {"0sFU@W>Ao*BT64?[L5aONSK.'"...};
public static final String[] f3651b = {" \bB\u0017\u001e)YBN\u001eT/\u001e4V\u0001ZT/6VV"...};
public static final String[] f3652c = {"\u0000\u0000\u0013\u00006\u0000\\\u0000\u0000¢\u0000¹\u0000¿\u0000"...};
public static String m5192a(int i) {
int i2 = i / 4096;
int i3 = i % 4096;
int i4 = i + 1;
int i5 = i4 / 4096;
int i6 = i4 % 4096;
String[] strArr = f3652c;
String str = strArr[i2];
String str2 = strArr[i5];
int i7 = i3 * 2;
int charAt = ((str.charAt(i7 + 1) & 65535) << 16) | (str.charAt(i7) & 65535);
int i8 = i6 * 2;
int charAt2 = ((str2.charAt(i8 + 1) << 16) | str2.charAt(i8)) - charAt;
char[] cArr = new char[charAt2];
for (int i9 = 0; i9 < charAt2; i9++) {
int i10 = charAt + i9;
int charAt3 = f3651b[i10 / 8192].charAt(i10 % 8192) & 65535;
cArr[i9] = f3650a[charAt3 / 8192].charAt(charAt3 % 8192);
}
return new String(cArr);
}
}
如果我调用 m5192a(1) 并将任何 int 索引作为参数传递,代码将返回一个字符串。这就像在源代码中隐藏了某种纯字符串。
有人知道可能的反向代码吗?将纯字符串转换为此?这是一种有名字的已知技术吗?
【问题讨论】:
-
hash function通常将字符串转换为数字。这与你所拥有的相反,但也许它可以以某种方式帮助你...... -
这看起来像是一种算法,可以确定性地生成从 int 键看起来随机的字符串。您可能会问这个关于明显反编译代码的问题的一个原因是试图从当前服务(您只有已编译的 Java)计算服务的未来密钥,以便您可以做一些邪恶的事情。您需要证明非恶意意图。 IE。你不是想众包一个黑客。
-
我投票结束这个问题,因为它似乎是众包某种邪恶的活动。
标签: java algorithm obfuscation