2016-04-04 10 views
-1
public static void main(String[] args) throws IOException { 

    int x; 
    int y; 
    int xo; 
    DataInputStream input = new DataInputStream(new FileInputStream(
      "file1.dat")); 
    DataInputStream input1 = new DataInputStream(new FileInputStream(
      "file2.dat")); 



    while (input.available() > 0) { 

     x = input.readInt(); 
     // System.out.println("File 1 "+x); 
     y = input1.readInt(); 
     // System.out.println("File 2 "+y); 

     xo=(x^y); 
     System.out.println(""+xo); 
    } } 

サーバにloged、サーバが暗号化されているログファイルを生成し、コアJavaの必要性溶液(.datファイルの両方が暗号化されている)

電流出力:必要な

1281 
7282 
3861 

出力:

ALICE 
BOB 
FRANK 
+0

...など他のサイズ  — byteのXORブロック、intに完全に可能ですまた、 'ストリームの終わりのためのテストではありません)('利用可能 – user1121883

+0

入力ファイルを提供してください。 Javadocを参照してください。 'EOFException'がキャッチされるまで、読込みループを実行する必要があります。 – EJP

答えて

1

あなたは文字数(例えばAの65)を文字列( "65")に変換して出力します。また、printlnを使用して改行を追加しています。あなたは出力に文字(「A」)、そしておそらくなしに任意の改行(print)欲しい:

System.out.print((char)xo); 

ます。また、符号なしshortのを読んでいる、正しい可能性が高いではありませんが、ファイルの作成方法に完全に依存します。通常、テキストのXOR難読化は文字レベルで行われるため、おそらくDataInputStream#readCharが必要です。したがって、たとえば:

char x, y, xo; 
// ... 
while (input.available() > 0) { 

    x = input.readChar(); 
    // System.out.println("File 1 "+x); 
    y = input1.readChar(); 
    // System.out.println("File 2 "+y); 

    xo = (char)(x^y); 
    System.out.print(xo); 
} 

...ただし、ファイルの作成方法によって異なります。それは

+0

Bro !!私はすでにこれを行ったが、問題は私が親切に私が暗号化されたdatファイルとxorをプレーンテキストの答えを得るために別の暗号化されたdatファイルとファイルを読まなければならないと私に示唆した使用方法を読んでいると思います –

+0

@ahsanmurtaza:通常はXOR難読化(これは暗号化と呼ぶのが少しです)では、バイト単位で処理されます。だから、バイトを読み込みたいので、['DataInputStream#readByte'](http://docs.oracle.com/javase/8/docs/api/java/io/DataInputStream.html#readByte--) ['InputStream#read'](http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html#read--))。 –

+0

@ T.J.Crowder bro私は親切にも、バイトとしてdatファイルを読み取るために使用するコードを私に与えてくれる、それは非常に高く評価されます –

関連する問題