2016-12-10 17 views
0

私は基本的にjavaでファイルを解読したいと思います。単純にファイルを1行ずつ読み込み、charの値を "char + = key"に変更します。ここでkeyは整数です。 問題は、2より大きいか等しいキーを使用すると、それ以上動作しないということです。Javaの非常に基本的なファイルの暗号化

public void encryptData(int key) { 
    System.out.println("Encrypt"); 
    try { 
     BufferedReader br = new BufferedReader(new FileReader("encrypted.data")); 
     BufferedWriter out = new BufferedWriter(new FileWriter("temp_encrypted.data")); 
     String str; 
     while ((str = br.readLine()) != null) { 
      char[] str_array = str.toCharArray(); 
      // Encrypt one line 
      for (int i = 0; i < str.length(); i++) { 
       str_array[i] += key; 
      } 
      // Put the line in temp file 
      str = String.valueOf(str_array); 
      out.write(str_array); 
     } 
     br.close(); 
     out.close(); 

    } catch (IOException e) { 
     System.out.println(e.getMessage()); 
    } 
} 

復号化機能は同じであるが、入力/出力ファイルと交換し、代わりにキー値を加算することで、私はそれを引きます。

私はcharでcharをチェックしています。実際には、キー値> 1を使用するとヘッダーが乱れることがあります。それはcharの最大値を超えているのでしょうか?

+0

上記の例のencrypted.dataファイルは、暗号化されていないデータを暗号化する生のテキストです。 – JasonM1

+0

はい、このことを忘れました。これは、私が最初にencrypted.dataにデータを入力した後に、新しいファイルで暗号化し、新しいファイルを古いファイルに上書きするためです。これがtempと呼ばれる理由です。混乱させて申し訳ありません。 –

答えて

1

あなたは基本的に汎用のシーザー暗号を実装しています。 文字に数字を追加すると、文字を改行などに変更することができます。これは、BufferedReaderを使用して再度読み込む場合には機能しません。

改行を正しくエンコードしてデコードするのに最適です。任意の非ASCII文字。

+0

これは非常に役に立ちました。ありがとうございました!今明らかになっているようです。 –

関連する問題