これはファイルを復号化することになっています。アルゴリズムを理解しようとしていますが、何が起こっているのかを理解するのに少し問題があります。ヒントはありますか?ありがとう!
localStringBuilder1 = new StringBuilder("");
localStringBuilder2 = new StringBuilder("");
Matcher localMatcher = Pattern.compile("[a-zA-z_\\-]+\\.html").matcher(paramString); //paramString is the encrypted file
localMatcher.find();
String str2 = localMatcher.group();
for (Integer localInteger1 = Integer.valueOf(0); localInteger1
.intValue() < str2.length(); localInteger1 = Integer
.valueOf(1 + localInteger1.intValue())) {
localStringBuilder2.append(1 + Math.round(str2
.codePointAt(localInteger1.intValue()) % 3));
if (localInteger1.intValue() < "fdjkhireuhsdthuirdfg".length())
localStringBuilder2.append(1 + Math
.round("fdjkhireuhsdthuirdfg".codePointAt(localInteger1
.intValue()) % 3));
}
更新:簡略化されたループ
for (int i = 0; i < str2.length(); i++) {
localStringBuilder2.append(1 + Math.round(str2
.codePointAt(i) % 3));
if (i < "fdjkhireuhsdthuirdfg".length())
localStringBuilder2.append(1 + Math
.round("fdjkhireuhsdthuirdfg".codePointAt(i) % 3));
}
そして、あなたはここで完全なソースコードを見つけることができます
編集 作成された文字列を解決してくれたVandeyに感謝します: "21321223331121"
ただし、これでは完全な答えは得られません。次の部分は(私から地獄を打ち負かす)です:
label249: if (localInteger2.intValue() < i);
try
{
localStringBuilder1.append((char)(Integer.parseInt(str1.substring(0 + localInteger2.intValue(), 2 + localInteger2.intValue()), 16) - Integer.parseInt(localStringBuilder2.substring(localInteger2.intValue() / 2 % localStringBuilder2.length(), 1 + localInteger2.intValue() / 2 % localStringBuilder2.length()))));
label327: localInteger2 = Integer.valueOf(2 + localInteger2.intValue());
break label249;
str3 = localStringBuilder1.toString();
}
catch (StringIndexOutOfBoundsException localStringIndexOutOfBoundsException)
{
break label327;
}