Как Проверить, Шифруется ли Файл с помощью AES (Rijndael)

Я использую классы 'RijndaelManaged' и 'CryptoStream' в C# для шифрования файлов. Прежде, чем зашифровать файлы, я хочу проверить, шифруется ли файл уже или нет.

Я пытался использовать File.GetAttributes() метод для проверки на Шифрование, но это не работает.

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

7
задан Mako 5 March 2010 в 19:55
поделиться

4 ответа

Без каких-либо настраиваемых заголовков единственный способ быть абсолютно уверенным в том, что файл зашифрован, - это попытаться его расшифровать.

Если вы попытаетесь сжать файл, и он станет меньше, то вероятность его шифрования крайне мала. Если имеется неравномерное распределение байтовых значений (включая простой текст!), То шифрование маловероятно.

Эта эвристика зависит от правильного выполнения шифрования. Если AES применяется к файлу по одному блоку, в результате могут появиться шаблоны, но, поскольку вы используете CryptoStream, это не должно быть проблемой.

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

9
ответ дан 6 December 2019 в 14:03
поделиться

Предположим, у меня есть файл F, содержащий шифротекст X, который является шифрованием открытого текста Y с помощью ключа Z.

Я хочу убедиться, что открытый текст Y может быть определен только тем, кто владеет ключом Z и ключом Q. (Я могу придумать ряд причин, по которым я могу захотеть сделать это.)

Поэтому я хочу зашифровать уже зашифрованный файл ключом Q.

Вы хотите сказать, что ваша система хочет обнаружить, что F уже зашифрован, а затем отказаться шифровать его ключом Q?

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

5
ответ дан 6 December 2019 в 14:03
поделиться

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

1
ответ дан 6 December 2019 в 14:03
поделиться

Если файл зашифрован, он будет отображаться как поток случайных байтов. Вы можете:

  • Попытаться открыть файл и / или подтвердить, что он имеет ожидаемый формат (JPG, ZIP и т. Д.). Если файл соответствует известному формату, значит, он расшифрован.

  • Попытайтесь расшифровать файл, если у вас есть ключ, затем повторите предыдущий шаг. Если теперь он соответствует известному формату, значит, вы знаете, что он (был?) Зашифрован.

0
ответ дан 6 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: