0

プレーンテキストデータをバイナリ形式に変換して、赤字にならないようにしようとしています。データはファイルに書き込む必要があります。コンソールウィンドウで印刷すると変換が機能し、元のテキストを読むことができません。ただし、ファイルに書き込むと、同じ元のテキストが表示されます。このバイナリデータを暗号化せずにファイルに書き込むにはどうすればよいですか?

このファイルは、後でバイナリ データを受け入れる別のサード パーティ製ツールで処理する必要があります。これが、独自のアルゴリズムを使用して暗号化できない理由です。

これは私のコードです:

import java.io.*;
import java.lang.*;
public class convert{
public static void main( String args[] ){
String s= "This is text";
try{
File file= new File("test.php");
file.createNewFile();
FileWriter fw= new FileWriter( file.getName(), true );
BufferedWriter bw= new BufferedWriter( fw );

byte[] b= s.getBytes();
for(int x=0; x<b.length; x++){
byte c=b[x];
bw.write( c );
System.out.println(c);
}

bw.close();
}catch( Exception e ){ e.printStackTrace(); }
}//main
}//class
4

2 に答える 2

1

プレーンテキストはそれ自体がバイナリ形式であり、各バイトは文字として解釈されます (または、UTF-8、UTF-16 など、想定または指定されたエンコーディングに応じて、他のバリアント)。

これは、ASCII 文字をバイトとしてファイルに書き込むと、見た目が同じになり、誰でも読み取ることができることを意味します。実際、多くのバイナリ ファイル形式は文字列を通常のバイトとして保存します。つまり、次のような 16 進エディタで開くと読み取ることができます。 16 進エディタ

読み取り不能にするために必要なことは、読み取り不能な一般的な形式にシリアル化することです。Java での通常のシリアル化は残念ながら読み取り可能ですが、それを隠す方法に関するアドバイスについては、こちらを参照してください。ZIP または同様の圧縮アルゴリズムも使用できます。

別のよりハックな方法は、すべての文字バイトを既知の値だけシフトすることです。これにより、別の文字になり、判読できなくなります。これは、非常に基本的なCaesar Chipher と見なすことができます。

しかし、最終的に重要なのは、ターゲット プログラムがどの形式を読み取ることができるかということだけです。

于 2013-02-22T04:17:17.810 に答える