Как Linux распознает файл как файл определенного типа и как программно изменить его?

Я создаю программу на 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. Предполагая, что тип файла-распознается из-за байтов в файле, как я могу изменить тип файла-?

  • Где я могу найти список того, какие байты что означают в файле?
5
задан jww 15 October 2019 в 00:53
поделиться