Se il file è unicode / ansi / etc, puoi fare qualche algoritmo per analizzare qualcosa come il primo 200 di un file e vedere se ci sono più caratteri latini di altri caratteri.
Ricordo che ero piuttosto seccato quando ho provato l'attacco di forza bruta XOR su un semplice esercizio di progetto eulero, ma era facile e dovevo solo cercare parole inglesi comuni.
Ho letto da qualche parte che nel software di crittografia, l'implementazione è molto importante, a volte più importante degli alorithms. Quando leggo questo, mi chiedo ancora se si parla di argomenti ovvi come i generatori di pseudo casuali, o piuttosto di dettagli meno ovvi come nascondere il formato del file che si cripta.
Ad esempio, se si cripta un file, se si tratta di un file PNG o GIF, assicurarsi di rimuovere il numero magico / stringa che contiene i formati di file e, se si tratta di un file di testo, non utilizzare una tabella ASCII : usa la tua tabella dei caratteri, ad esempio, metti tutto il carattere latino a 0, i numeri a 245-255 e così via. potresti anche permutare, o rot13, o altro.
Algoritmi come AES o Blowfish / TwoFish sono "matematicamente" sicuri, perché è stato dimostrato che nessun attacco DIVERSO DI BRUTEFORCE è stato testato abbastanza efficiente: puoi solo decifrare il testo trovando la chiave effettiva.
Ma quegli algoritmi sono solo teoricamente efficienti, DEVI implementarli considerando altri fattori di pratica come la dimensione del file, l'uso della compressione, la codifica del testo ecc.
Ad esempio, sappi che sarebbe semplicemente stupido archiviare il nome del file in testo normale accanto al tuo file criptato.