需要帮助将c#XOR转换为Java

时间:2013-06-21 16:40:04

标签: c# java ascii xor

此后离开的开发人员创建了一个我需要转换为java的日志模糊程序。

所有的char项都被255 xor'ed,这里是de'obfuscation代码片段

char[] array = text.ToCharArray();
for (int i = 0; i < array.Length; i++){
    char @string = array[i];
     text2 += Conversions.ToString(Strings.Chr(Strings.Asc(@string) ^ 255));
}
streamWriter.WriteLine(text2);

我需要将此Conversions.ToString(Strings.Chr(Strings.Asc(@string) ^ 255));从c#转换为java。问题是在java中,如果ascii字符是&gt; 255,似乎没有正确解码字符。这是一个例子:

String e = "ÃÎÌËÁßÍÏÎÌÐÏÉÐÎÌßÎÊÒÌÈÒÌÇßÓœž“ÏÑ–‘™Áß‘ŠÎÏÈÈËÑ‘ŠŒ–šÑœ’ß™ÅßÏÌÌÉ"; 
    String sOut1 = ""; 
    String sOut2 = "'";
    char[] cArray = e.toCharArray();
    for(int index = 0; index < cArray.length; index++){
        int before = ((int) cArray[index]);
        int after = before ^ 255;
        char s = ((char) after);
        sOut1 += cArray[index];
        sOut2 += Character.toString(s);
        System.out.println( "1: " + cArray[index] + 
                            "  2: " + Integer.toString(before) + 
                            "  3: " + Integer.toString(after) +
                            "  4: " + Character.toString(s)

                );


    }
    System.out.println(sOut1);
    System.out.println(sOut2);

以下是我的java代码的输出:

ÃÎÌËÁßÍÏÎÌÐÏÉÐÎÌßÎÊÒÌÈÒÌÇßÓœž“ÏÑ–‘™Áß‘ŠÎÏÈÈËÑ‘ŠŒ–šÑœ’ß™ÅßÏÌÌÉ

'&LT; 134&GT; 2013/06/13 15-37-38&lt;⃣oƬƁ⃣0.⃬⃧⇝o&gt; ⃧Ɵ10774.⃧Ɵƭp⃬rƞ.Ƭo⃦p⇝

感谢您的帮助和给予的任何帮助。

1 个答案:

答案 0 :(得分:-1)

尝试仅获取Java char的低8位。你可以通过屏蔽来做到这一点:

char tmp&=255;

或使用模数运算符来掩盖它:

char tmp=tmp%255;