ファイルの入力ストリームを読み取り、パスワードに基づいてバイト数を変更して暗号化し、新しい暗号化ファイルを作成するプログラムをJavaで作成しています。
例:
次の単語を含むテスト ファイルを作成しました:
This is a test to see if the encrypter project works.
Java でバイトを読み取ると、次のようになります:
[84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 116, 101, 115, 116, 32, 116, 111, 32, 115, 101, 101, 32, 105, 102, 32, 116, 104, 101, 32, 101, 110, 99, 114, 121, 112, 116, 101, 114, 32, 112, 114, 111, 106, 101, 99, 116, 32, 119, 111, 114, 107, 115, 46, 10]
次に、各バイトの値を取得し、パスワードの Unicode 値を減算し、その絶対値を取得します。 . 次に、それをファイルに書き込みます。
私はそれを暗号化するためにさまざまなアルゴリズムをいじっており、テスト テキスト ファイルでテストを開始しました。私は Linux を使用しているので、ファイル拡張子 (.txt、.pdf など) はありません。数回暗号化した後、コンピューターがテキスト ファイルとして認識しなくなったことに気付きました。 、画像ファイルとして!(つまり、クリックすると、デフォルトで、画像エディターでファイルを開こうとします)
だからここに私の質問があります:
1. コンピュータがファイルを特定のファイル タイプとして認識する原因は何ですか?
- ファイルのどこかで見ている特定のバイトと関係があると推測していますが、それ以上はわかりません。
2. この情報はファイルのどこに保存されますか?
- 暗号化しても同じファイルタイプのままでいいと思っていたので、例えばファイルタイプの情報が最初の10バイトにあれば、それ以降は全部暗号化しようと思っていたのですが、ただし、たとえば最初の 10 バイトはそのままにしておきます。
3. ファイルタイプ情報は標準ですか?
- これらのバイトには、すべてのプラットフォームで標準的な意味がありますか (つまり、pdf ファイルは、使用するコンピューターに関係なく pdf ファイルです。それは
.pdf
拡張子によるものですか、それとも、ファイルのどこかにあるバイトによるものですか)。ファイル。)
4. ファイル内のバイトによってファイル タイプが認識されると仮定すると、ファイル タイプを変更するにはどうすればよいですか?
- ファイル内のバイトの意味のリストはどこにありますか?