2010-03-05 18 views
7

Sto utilizzando le classi "RijndaelManaged" e "CryptoStream" in C# per crittografare i file. Prima di crittografare i file, voglio verificare se il file è già crittografato o meno.Come verificare se il file è crittografato utilizzando AES (Rijndael)

Ho provato a utilizzare il metodo File.GetAttributes() per verificare la crittografia ma non funziona.

Ho bisogno di alcuni suggerimenti su come posso verificare se il file è già crittografato o meno.

risposta

9

Senza alcun tipo di intestazioni personalizzate, l'unico modo per essere assolutamente sicuri che il file sia crittografato è tentare di decrittografarlo.

Se si tenta di comprimere il file e si riduce, è estremamente improbabile che venga crittografato. Se esiste una distribuzione non uniforme dei valori di byte (incluso il testo normale!), È improbabile che venga crittografata.

Queste euristiche dipendono dalla corretta esecuzione della crittografia. Se AES viene applicato a un file di un blocco alla volta, i pattern possono emergere nel risultato, ma poiché si utilizza CryptoStream questo non dovrebbe essere un problema.

Se il proprio codice verrà sempre utilizzato per crittografare e decrittografare i file, è consigliabile aggiungere un'intestazione personalizzata che indichi che si tratta di un file crittografato.

+0

L'aggiunta di un header personalizzato sembra una buona idea :) darà una prova – Mako

0

Se il file è crittografato, apparirà come un flusso di byte casuali. È possibile:

  • tenta di aprire il file e/o confermare che è il formato previsto (JPG, ZIP, a prescindere). Se il file corrisponde a un formato noto, allora sai che è decodificato.

  • Tentare di decodificare il file se si dispone della chiave, quindi ripetere il passaggio precedente. Se ora corrisponde a un formato noto, allora sai che è (era?) Crittografato.

1

È necessario ispezionare il file e cercare strutture o stringhe di byte che non sarebbero presenti se il file è crittografato. Avresti bisogno di un test separato per ogni tipo di file con cui hai a che fare.

5

Supponiamo che io abbia un file F contenente testo cifrato X, che è la cifratura del testo in chiaro Y con Z. chiave

desidero assicurare che il testo in chiaro Y può essere determinata solo da chi possiede sia Z chiave e la chiave D. (mi viene in mente una serie di motivi per cui potrei desiderare di fare questo.)

pertanto desidero crittografare il file già crittografati con chiave Q.

mi stai dicendo che il sistema desidera rilevare che F è già crittografato e quindi rifiuta di crittografarlo con la chiave Q?

Sembra una cattiva idea. Potrei volere per crittografare il file con la chiave Q indipendentemente dal fatto che sia già crittografato con la chiave Z o meno.

+0

Sono d'accordo con te che la crittografia multipla è una buona idea. Ma volevo solo vedere se c'è un modo attraverso il quale possiamo trovare se un file è stato crittografato o meno. – Mako

0

Impostare il metodo di crittografia di tipo bool, se il file può decodificare, quindi il metodo restituisce true che indica che il file è crittografato, altrimenti il ​​metodo genera un'eccezione e restituisce false che indica che il file non può essere decifrato, o che il file è non crittografare.

Problemi correlati