2013-06-21 75 views
0

開發人員已經創建了一個小日誌模糊處理程序,我需要將其轉換爲java。需要幫助將c#XOR轉換爲Java

所有的焦炭項目已通過255進行XOR運算,這裏是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字符大於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代碼的輸出:

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

「< 134> 2013年6月13日15-37-38 <⃣oƬƁ⃣0.⃬⃧⇝o>⃧Ɵ10774 .⃧Ɵƭp⃬rƞ.Ƭo⃦p⃦

感謝您的幫助和給予的幫助。

+2

什麼是'Strings'和'Conversions'?這些聽起來不像框架類型... –

+0

也許你正在尋找String.getBytes(「ISO-8859-1」)和新的字符串(byte [],「ISO-8859-1」) –

回答

-1

嘗試僅獲取Java char的低8位。你可以做到這一點的掩蔽:

char tmp&=255; 

或者使用模運算來掩蓋它:

char tmp=tmp%255; 
+0

Ermir,is無論如何,你可以指點我更多的信息,或者一個小例子?謝謝 – golgiapparatus