2012-03-05 5 views
3

Я получаю зашифрованные файлы данных в каталог, где они незашифрованы ночным процессом.
Затем загружаются незашифрованные файлы.Как легко сказать, если файл зашифрован

Мне нужно написать метод Java, чтобы вернуть массив, содержащий имена файлов всех незашифрованных файлов в каталоге.

Метод encrytion - openSSL (aes128).

До сих пор я пробовал getType(), но он возвращает content/unknown как для незашифрованных файлов данных, так и для зашифрованного файла.

Теперь я просматриваю первые две строки каждого файла и проверяет возвращаемые символы, чтобы проверить, зашифрован ли файл.
Что мне нужно знать, есть ли лучший способ сделать это?

Я мог бы также жить с проверкой, является ли содержимое файла XML или простым текстом, а не проверяет, зашифрован ли файл, если это облегчает решение?

+0

В каком классе есть метод getType? – Freiheit

+2

читайте здесь ответ: http://stackoverflow.com/questions/2389561/how-to-check-if-file-is-encrypted-using-aes-rijndael – rosco

+0

@Freiheit, http: //www.extreme.indiana .edu/APIs/wsdl4j/javax/WSDL/расширения/мим/MIMEContent.html – Ollie

ответ

4

Используйте соглашение об именах, чтобы расшифрованные файлы имели другое расширение или помещали дешифрованные файлы в другой каталог.

Редактировать: учитывая ограничения, о которых вы упоминаете, я думаю, вам придется делать то, что вы предлагаете в вопросе. Это http://www.dansdata.com/gz125.htm - интересное руководство по проблемам идентификации файлов. Вы также можете вывести команду file unix, если она работает с вашими конкретными типами файлов.

+0

Мне хотелось бы сделать это таким образом, и это было мое первоначальное решение, к сожалению, меня ограничивают разные организации-партнеры, отправляющие разные расширения файлов, и другое искусственное ограничение, которое меня накладывает на клиента, указывающее, что файлы должны находиться в указанном каталоге , – Ollie

+0

@artbristol, спасибо за ваше редактирование. Я изначально собирался использовать решение на основе Unix для команды 'file' и ограничивать то, что было возвращено в XML или текстовые файлы. Я надеялся на более элегантное Java-решение, но, как вы полагаете, решение Unix может быть лучше. Спасибо за ссылку на идентификатор файла. – Ollie

0

Я не могу комментировать AES, но несколько стандартов шифрования (PGP приходит на ум) позволяют использовать общий заголовок или иметь общий атрибут (например, блок подписи или открытый ключ).

Ваш план проверки XML был бы прекрасен, jsut передал его через синтаксический анализатор XML. Однако это только говорит вам, является ли файл XML, а не если он зашифрован.

Как вы можете отличить обычный текст от зашифрованного файла? Все это только текст?

Какая реализация эй вы используете? Какие библиотеки вы используете?

Являются ли зашифрованные файлы просто зашифрованными или они также закодированы в base64? Как эти файлы хранятся в файловой системе? Написано прямо или через другой механизм?

На основании комментария к вопросу от @rosco есть ли причина, по которой файл не может быть расшифрован, чтобы проверить, зашифрован ли он? Это очень большие файлы? Является ли ваше приложение тем, которое расшифровывает его или вы просто посредник? Существуют ли ограничения безопасности, которые помешали бы вам расшифровать его?

Можете ли вы установить бизнес-правила на месте? Например, укажите, что заявки будут отклонены, если они не зашифрованы?

+0

Простой текст можно отличить от зашифрованного текста содержащимися в нем символами, зашифрованный файл имеет много не буквенно-цифровых символов, которые я мог прочитать и вывести с большой вероятностью, что он зашифрован. Шифрование - openSSl aes128. Не уверен в базовой кодировке. Все файлы, записанные в каталог через SFTP-клиент. – Ollie

Смежные вопросы